javax.jms.Connection#start()
到底是什么意思。根据javadoc,它说:
启动(或重新启动)连接传入的消息。
但这究竟意味着什么?我想这取决于实现,这对IBM MQ(最新的8+)意味着什么?也许在客户端连接之后会预先缓存服务器消息? 我已经检查了生产者的一些examples,他们正在调用start方法,但从不读取消息。我在没有调用start()的情况下测试了代码,它工作正常(发送,没有接收)。
我只是想要了解MQ可能比需要更多但仍然我想知道。也许它在其他JMS实现中是如何完成的?像Tibco,Apache MQ?也许有人知道?
答案 0 :(得分:4)
正如文档所提到的,Connection.start方法开始从消息传递提供程序(在本例中为MQ)向应用程序传递消息。如果不调用Connection.start,消费者将无法接收消息。
发送邮件不需要connection.start。看看MQ附带的JmsConsumer.java示例。它调用connection.start。您是否可以在不调用connection.start?
的情况下发布正在接收消息的示例代码答案 1 :(得分:1)
正如Shashi所说。如果您有一个消息使用者并且在之前调用connection.start(),则会收到任何消息。启动连接,您将收到消息。
同样,如果您设置了消息侦听器,则在调用connection.start()之前,它不会开始获取任何消息。
在这两种情况下,即使消息在队列中,也不会收到任何内容,直到调用connection.start()。
就内部而言 - 是否有一些你无法解释的行为?你能说清楚吗。
JMS2.0上下文是自动启动的,因此如果您正在使用新的API调用来启动则不是必需的。