如何同步jmstemplate receive()方法?发件人向代理发送消息,另一方面,消费者从代理队列或主题消费消息。对于receive,它将是一些轮询线程,等待代理上的某些数据。如何保持同步?
答案 0 :(得分:3)
JmsTemplate
使用场景后面的JMS API,尤其是MessageConsumer
。该服务可以尝试在不等待(Message
)的情况下尝试接收receiveNoWait
,也可以等待一段可配置的时间(receive(long timeout)
)。当以超时0调用它时,接收方法将阻塞,直到消息到达。 JmsTemplate
中没有任何内容可以处理所有这些内容(即由客户端代理实现提供)。
更常规的接收消息的方法是使用侦听器容器。使用Spring,DefaultMessageListenerContainer
允许您使用线程轮询来处理传入的消息。有关详细信息,请查看jms documentation of the Spring framework。