JMS连接 - 启动方法(IBM MQ impl)

时间:2014-09-26 06:30:20

标签: java jms ibm-mq tibco-ems

javax.jms.Connection#start()到底是什么意思。根据javadoc,它说:

  

启动(或重新启动)连接传入的消息。

但这究竟意味着什么?我想这取决于实现,这对IBM MQ(最新的8+)意味着什么?也许在客户端连接之后会预先缓存服务器消息? 我已经检查了生产者的一些examples,他们正在调用start方法,但从不读取消息。我在没有调用start()的情况下测试了代码,它工作正常(发送,没有接收)。

我只是想要了解MQ可能比需要更多但仍然我想知道。也许它在其他JMS实现中是如何完成的?像Tibco,Apache MQ?也许有人知道?

2 个答案:

答案 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调用来启动则不是必需的。