Spring JMS Subscriber无法接收消息?

时间:2014-01-09 10:15:48

标签: java spring jms

我正在使用Spring JMS和Web Sphere Default Messaging Provider来满足我的消息需求。 我在WAS上创建了一个Topic和连接工厂。

我可以使用发布商的JMSTemplate向主题发送消息。

但每当我在订阅者中呼叫JmsTemplate.receive()时,它就会进入等待状态,我无法在订阅者中收到消息。

但是,如果使用监听器作为订阅者,或者在使用我的发布者发布消息时启动新线程,我可以使用JmsTemplate在订阅者中接收消息。

寻求帮助!

1 个答案:

答案 0 :(得分:1)

消息未存储在主题中。如果您创建发布者,则发送消息ans然后启动订阅者将不会订阅任何消息。在发布时,如果有任何订阅者订阅该主题,那么只有那些订阅者才会收到该消息。如果没有订户,则将丢弃消息。

它进入等待状态,这意味着它正在等待来自JMS服务器的消息,并且当前没有。

无论您使用哪种订阅模式 - 异步(MessageListener)或同步(接收),您都需要先创建订阅者。

您可以使用

subscriber.receive(long timeout);

如果您不想无限期等待。