gpt4 book ai didi

java - 启动连接 JMS?

转载 作者:行者123 更新时间:2023-11-30 03:28:16 25 4
gpt4 key购买 nike

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

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() 通常是最后要做的事情。我是否可以在连接创建时启动连接?例如,类似这样的事情

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

最佳答案

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

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

否则可以调用connection.start,然后调用consumer.receive方法同步接收消息。

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

关于java - 启动连接 JMS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29673440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com