2013-02-08 3 views
2

В моем приложении java swing я применил jms-клиент, который взаимодействует с сервером jms. Это прекрасно работает.JMS в передовых методах использования при отправке сообщения?

В настоящее время, когда мое приложение запускается я создать соединение и сеанс:

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); 

Мне было интересно, что это лучшая практика в этом случае?

Могу ли я просто создать все, когда мне нужно отправить сообщение, или лучше сохранить место назначения, MessageProducer, MessageConsumer где-нибудь и повторно использовать его. Есть ли что-то особенное, на что мне нужно обратить внимание, когда я решу снова использовать объекты?

ответ

3

Необходимо повторно использовать объекты, которые можно повторно использовать.

Возможно, подключение возможно для всего приложения, так как оно безопасно для потоков.

Объект сеанса не является потокобезопасным, и вы должны придерживаться сеанса на поток в этом случае.

Вы можете обмануть. Используйте org.apache.activemq.pool.PooledConnectionFactory, и он настроит пул сессий, соединений и продюсеров.

Вы по-прежнему должны писать connection.createSession(.. и session.close(), но это просто принимает и освобождает объекты из бассейна.

Возможно, было бы проще на самом деле повторно использовать ваши объекты, если у вас есть мелкозернистый контроль над вашим параллелизмом, что редко бывает.

+0

Благодарим вас за вход Петтер, это очень полезно. Особенно то, что касается безопасности потоков и пула соединений. –

Смежные вопросы