Java 启动连接JMS?

Java 启动连接JMS?,java,jms,producer-consumer,hornetq,Java,Jms,Producer Consumer,Hornetq,我正在尝试构建一个基本的生产者-消费者应用程序。我有三个消息处理队列,可以有多个生产者和消费者。我在这里面临的基本问题是,我应该什么时候打电话给 connection.start() 我正在使用的javax.jms.QueueConnection的方法。在线列出的所有示例(例如:-) 显示在我们在目的地上生成消息之后,以及在我们启动消费者之后,我们是否应该启动连接。i、 e.connection.start()通常是最后一件事。是否可能在创建连接时启动连接?比如像这样的 Properties

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

connection.start()
我正在使用的javax.jms.QueueConnection的方法。在线列出的所有示例(例如:-) 显示在我们在目的地上生成消息之后,以及在我们启动消费者之后,我们是否应该启动连接。i、 e.
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
call告诉消息传递提供者开始消息传递。您的应用程序必须准备好接收消息。如果您使用的是消息侦听器(
onMessage
方法),则建议您首先创建使用者,设置消息侦听器,然后调用
连接。启动
,以便您的应用程序准备好接收消息

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

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