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

kod*_*ari 7 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

maz*_*cha 1

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