当我在我的队列 MessageConsumer 对象上设置一个 messageListener 时,到底发生了什么。 MessageConsumer 对象是否在后台进行某种轮询,或者这是 JMS 服务器进行的真正推送?
Java 消息服务(O'Reilly Java 系列),David A. Chappell、Richard Monson-Haefel 和 Mark Richards,p10 第 1 章:点对点
点对点消息传递模型传统上是基于拉取或基于轮询的模型,其中从队列中请求消息而不是自动推送到客户端
http://docs.oracle.com/javaee/1.4/tutorial/doc/JMS4.html#wp79175
消息传递开始时,JMS 提供程序会在传递消息时自动调用消息监听器的 onMessage 方法。
谢谢, 科德
最佳答案
这两者并不矛盾。 P2P 本质上是基于拉取的,因为接收者有责任在生产者发送消息后阅读消息。您在第二个引用中提到的 onMessage() 方法是一种用于启动拉动的通知机制。这些变体也称为接收 JMS 消息的同步与异步模式,例如 this chapter in Java Tutorial .
关于java - JMS MessageConsumer 的 messageListener 是推还是拉?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10108287/