2015-04-16 3 views
0

Я пытаюсь создать базовое приложение Consumer Producer. У меня три очереди для обработки сообщений и могут иметь несколько производителей и потребителей. Основная проблема, с которой я столкнулся в том, что, когда я должен вызвать метод javax.jms.QueueConnection, который я используюЗапустить соединение JMS?

connection.start() 

. Все приведенные в Интернете примеры (например: https://github.com/hornetq/hornetq/blob/master/examples/jms/jmx/src/main/java/org/hornetq/jms/example/JMXExample.java) показывают, что после того, как мы отправили сообщение в пункт назначения и после того, как мы начали использовать потребитель, мы должны начать соединение. то есть connection.start(), как правило, последнее, что нужно сделать. Возможно ли, что я смогу начать свое соединение, когда и когда оно будет создано? Например, что-то вроде этого

Properties jndiProps = new Properties(); 
jndiProps.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); 
jndiProps.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces"); 
jndiProps.put("java.naming.provider.url", "localhost:1099"); 
context = new InitialContext(jndiProps); 
QueueConnectionFactory factory = (QueueConnectionFactory) context.lookup("/ConnectionFactory"); 
connection = factory.createQueueConnection(); 
connection.start(); 

ответ

1

Вы используете асинхронный потребитель, т.е. у вас есть onMessage метод для получения сообщений?

Причина для вызова connection.start после того, как потребители были созданы, заключается в том, что вызов connection.start говорит поставщику сообщений о начале доставки сообщений. Ваше приложение должно быть готово к отправке сообщений. Если вы используете прослушиватель сообщений (метод onMessage), рекомендуется сначала создать пользователя, настроить прослушиватель сообщений, а затем позвонить connection.start, чтобы ваше приложение было готово к отправке сообщений.

В противном случае вы можете позвонить connection.start, а затем вызвать метод consumer.receive для получения сообщений синхронно.

Обратите внимание, что если ваше приложение создает сообщения и не имеет потребителя, тогда нет необходимости звонить connection.start.

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

  • Нет связанных вопросов^_^