首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动Connection JMS?

启动Connection JMS?
EN

Stack Overflow用户
提问于 2015-04-16 19:33:30
回答 1查看 2.3K关注 0票数 1

我正在尝试构建一个基本的生产者消费者应用程序。我有三个消息处理队列,并且可以有多个生产者和消费者。我在这里面临的基本问题是我应该在什么时候调用

代码语言:javascript
复制
connection.start()

我正在使用的javax.jms.QueueConnection的方法。在线列出的所有示例(例如:- https://github.com/hornetq/hornetq/blob/master/examples/jms/jmx/src/main/java/org/hornetq/jms/example/JMXExample.java)都表明,在我们在目的地上生成了一条消息之后,在我们启动了一个消费者之后,我们应该启动连接。也就是说,connection.start()通常是最后要做的事情。是否可以在创建连接时启动连接?例如,如下所示

代码语言:javascript
复制
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();
EN

回答 1

Stack Overflow用户

发布于 2015-04-16 22:42:08

你是否在使用异步消费者,即你有没有onMessage方法来接收消息?

在创建消费者之后调用connection.start的原因是,connection.start调用通知消息传递提供者开始消息传递。您的应用程序必须准备好接收消息。如果您正在使用消息侦听器(onMessage方法),那么建议您首先创建消费者,设置消息侦听器,然后调用connection.start,以便您的应用程序准备好接收消息。

注如果您的应用程序正在生成消息,并且没有使用者,则不需要调用connection.start

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29673440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档