JMS MessageConsumer的messageListener进行推送还是拉动?

时间:2012-04-11 14:43:29

标签: java jms

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

Java消息服务(O'Reilly Java系列),David A. Chappell,Richard Monson-Haefel和Mark Richards,第10章第1章:点对点

点对点消息传递模型传统上是基于拉取或基于轮询的模型,从队列中请求消息而不是自动推送到客户端

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

当邮件传递开始时,无论何时传递邮件,JMS提供程序都会自动调用邮件侦听器的onMessage方法。

谢谢, KOD

1 个答案:

答案 0 :(得分:1)

这两者并不矛盾。 P2P基本上是基于拉取的,因为接收者有责任在生产者发送消息后阅读消息。您在第二个引用中提到的onMessage()方法是用于启动提取的通知机制。这些变体也称为接收JMS消息的同步和异步模式,例如在this chapter in Java Tutorial中。