JMS接收器线程和onMessage()回调

时间:2018-01-04 18:10:21

标签: jms

我看过类似的帖子,但没有得到满意的答复。

在JMS接收器线程中,我看到while循环编码如下:

while(true) { Thread.sleep(1000); }

上面的线程还附加了一个注册的侦听器,它实现了messageListener接口,从而提供了回调onMessage()事件。

当在侦听器上触发onMessage()事件时,接收器线程会发生什么?

它的状态是否会变错?它是否被中断(并引发中断的异常)?

上述while循环到底发生了什么?

1 个答案:

答案 0 :(得分:0)

上面的代码只是说'永远等待' - 它很可能是一个匆忙设计的方式,在某人点击Ctrl-C之前不结束这个帖子。 while(true)的代码将始终为true,因此它只会在此处阻塞,直到此线程被中断。这个帖子里面没有魔法!

然而,在您的第二个(不可见)“消息调度程序线程”中,已经在Connection.start()中自动创建了消息,并且会将消息分派给您的onMessage()方法。直到你调用Connection.stop()或退出你的程序。