JMS MessageConsumer的messageListener是推送还是拉取?

7
当我在我的队列MessageConsumer对象上设置messageListener时,在幕后到底发生了什么?MessageConsumer对象是否进行某种轮询或这是JMS服务器实际推送的结果?
《Java消息服务(O'Reilly Java Series)》作者David A. Chappell,Richard Monson-Haefel和Mark Richards在第1章第10页中提到:“点对点消息传递模型传统上是一种基于拉取或轮询的模型,其中消息是从队列中请求而不是自动推送到客户端。”

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

当消息传递开始时,JMS提供程序会自动调用消息监听器的onMessage方法,每当传递一条消息时。谢谢,Kod
1个回答

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接