1

jmstemplate的receive()方法是如何同步的?发送方将消息发送到代理,另一方面,消费者使用代理队列或主题中的消息。对于接收,它将是一些轮询线程等待代理上的一些数据。然后如何保持同步?

4

1 回答 1

3

JmsTemplate在幕后使用 JMS API,尤其是MessageConsumer. 该服务可以尝试在Message不等待的情况下接收 ( receiveNoWait),也可以等待可配置的时间量 ( receive(long timeout))。当超时时间为 0 时,接收方法会阻塞,直到消息到达。没有任何东西JmsTemplate可以处理所有这些(即它是由客户端代理实现提供的)。

接收消息的更常规方式是使用侦听器容器。使用 Spring,DefaultMessageListenerContainer允许您使用线程轮询来处理传入消息。查看Spring 框架的 jms 文档以获取更多信息。

于 2014-04-09T11:13:59.260 回答