【问题标题】:What other possibilities beside MDBs exist in Java to program message consumers?Java 中除了 MDB 之外还有哪些其他可能性来对消息消费者进行编程?
【发布时间】:2020-03-28 20:00:50
【问题描述】:

我读到有很多方法可以处理 JMS(Java Messaging Service) 消息,MDB(Message Driven Bean) 只是其中一种。那么除了 MDB 之外,Java 中还有哪些其他可能性来编程消息消费者呢?

【问题讨论】:

    标签: jakarta-ee jms message-driven-bean


    【解决方案1】:

    如 JMS 2.0 规范第 8 章所述:

    • 在简化的(即 JMS 2.0)API 中,消费者由 JMSConsumer 对象表示,并使用 JMSContext 上的几种方法之一创建。
    • 在经典(即 JMS 1.1)API 中,消费者由 MessageConsumer 对象表示,并使用 Session 上的多种方法之一创建。
    • 在用于点对点消息传递的特定域(即 JMS 1.0)API 中,消费者由 QueueReceiver 对象表示,并使用 QueueSession 上的几种方法之一创建。
    • 在用于发布-订阅消息的域指定(即 JMS 1.0)API 中,消费者由 TopicSubscriber 对象表示,并使用 TopicSession 上的多种方法之一创建。

    需要明确的是,更高版本的 JMS 规范向后兼容早期版本,因此如果您使用 JMS 1.1 客户端实现,则可以使用 1.1 和 1.0 API,如果您使用 JMS 2.0 客户端实现,则可以使用 2.0 、1.1 和 1.0 API。

    每一种消息消费者都可以同步或异步接收消息。

    MessageConsumerJMSConsumerQueueReceiverTopicSubscriber可以使用这些方法同步接收消息:

    • Message receive():返回为消费者生成的下一条消息
    • Message receive(long timeout):返回为 在指定超时时间内到达的消费者
    • Message receiveNoWait():如果立即可用,则返回为 cnsumer 生成的下一条消息。

    每一种消息消费者都可以使用消费者的setMessageListener() 方法注册一个实现JMS MessageListener 接口的对象。当消息到达消费者时,提供者通过调用侦听器的onMessage 方法来传递它们。

    【讨论】:

      猜你喜欢
      • 2021-11-29
      • 2012-01-28
      • 2016-06-21
      • 2011-05-12
      • 2011-11-19
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多