java - JMS MessageConsumer 的 messageListener 是推还是拉?

标签 java jms

当我在我的队列 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/

相关文章:

java - Netbeans Swing Matisse JCombobox 键值对

java - 旧日期格式与 Java 8 ZonedDateTime API 不兼容

java - JMS 自动确认消费者处理发生在 onMessage 中

JMS主题订阅Tomee 1.7.1

java - EJB3 中的动态资源注入(inject)?

java - 将 scala 功能添加到现有 EJB eclipse 项目中

java - Package By Feature 和 SONAR 表示依赖循环

java - maven jacoco : not generating code coverage report

java - Apache Camel : aggregate on pollEnrich results rather than from and how to preserve headers

java - 将 JMSListener 与 RabbitMQ 结合使用