2013-02-08 37 views
2

在我的java swing應用程序中,我實現了一個與jms服務器通信的jms客戶端。這工作正常。在發送消息時,Jms在swing應用程序中的最佳實踐?

目前,當我的應用程序啓動我創建了一個連接和會話:

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory 
connection = connectionFactory.createConnection(); 
connection.start(); 
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 

接下來當我需要將消息發送到主題我創建一個話題(發送郵件到),一個臨時隊列(接收回復),生產者(發送消息)和消費者(實際閱讀回覆):

Destination destination = session.createTopic ... 
MessageProducer producer = session.createProducer ... 
Destination tempDest = session.createTemporaryQueue(); 
MessageConsumer responseConsumer = session.createConsumer(tempDest); 
producer.send(msg); 

我想知道什麼是在這種情況下,最好的做法是什麼?

當我需要發送消息時,我可以簡單地創建所有內容,或者可以更好地將Destination,MessageProducer,MessageConsumer保存到某處並重新使用它。當我決定重新使用這些物體時,有什麼特別需要注意的嗎?

回答

3

您應該重複使用可以重複使用的對象。

連接可能可以爲您的整個應用程序重新使用,因爲它是線程安全的。

會話對象不是線程安全的,在這種情況下,您應該堅持每個線程的會話。

你可以作弊。使用org.apache.activemq.pool.PooledConnectionFactory,它將建立會話,連接和生產者池。

你仍然需要編寫connection.createSession(..session.close(),但這只是從池中取出和釋放對象。

如果您對併發進行細粒度控制(很少出現這種情況),實際重用對象可能會更容易。

+0

謝謝您的輸入Petter,它非常有用。尤其是線程安全和連接池上的東西。 – 2013-02-09 10:09:16

相關問題