2012-04-11 61 views
5

当我在我的队列MessageConsumer对象上设置messageListener时,真正发生了什么。 MessageConsumer对象是否在场景后面进行某种轮询,或者这是由JMS服务器进行的真正推送?JMS MessageConsumer的messageListener使推或拉?

Java消息服务(Java的奥赖利系列)由David A. Chappell的,理查德·蒙森-Haefel的和马克·理查兹,P10第一章:点至点

点至点的通讯模型传统上一直是pullbased或轮询为基础的模型,其中消息从队列请求,而不是被传递到客户端自动

http://docs.oracle.com/javaee/1.4/tutorial/doc/JMS4.html#wp79175

当消息传递开始时,JMS提供者自动调用吨无论何时传递消息,他都会收到消息监听器的onMessage方法。

感谢, KOD

回答

1

这两个不互相矛盾。 P2P基本上是基于拉的,因为一旦制作者发送消息,接收者有责任阅读消息。您在第二个报价单中提到的onMessage()方法是通知用于启动拉动的机制。这些变化也称为接收JMS消息的同步与异步模式,例如在this chapter in Java Tutorial中。