我正在使用Spring JMS和Web Sphere Default Messaging Provider来满足我的消息需求。 我在WAS上创建了一个Topic和连接工厂。
我可以使用发布商的JMSTemplate
向主题发送消息。
但每当我在订阅者中呼叫JmsTemplate.receive()
时,它就会进入等待状态,我无法在订阅者中收到消息。
但是,如果使用监听器作为订阅者,或者在使用我的发布者发布消息时启动新线程,我可以使用JmsTemplate
在订阅者中接收消息。
寻求帮助!
答案 0 :(得分:1)
消息未存储在主题中。如果您创建发布者,则发送消息ans然后启动订阅者将不会订阅任何消息。在发布时,如果有任何订阅者订阅该主题,那么只有那些订阅者才会收到该消息。如果没有订户,则将丢弃消息。
它进入等待状态,这意味着它正在等待来自JMS服务器的消息,并且当前没有。
无论您使用哪种订阅模式 - 异步(MessageListener)或同步(接收),您都需要先创建订阅者。
您可以使用
subscriber.receive(long timeout);
如果您不想无限期等待。