7

当我在队列 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 方法。

谢谢,科德

4

1 回答 1

1

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

于 2012-04-11T15:52:05.817 回答