Java 中除了 MDB 之外还都有哪些其他可能性来对消息消费者进行编程?

Posted

技术标签:

【中文标题】Java 中除了 MDB 之外还都有哪些其他可能性来对消息消费者进行编程?【英文标题】: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 中还有哪些其他可能性来编程消息消费者呢?

【问题讨论】:

【参考方案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 方法来传递它们。

【讨论】:

以上是关于Java 中除了 MDB 之外还都有哪些其他可能性来对消息消费者进行编程?的主要内容,如果未能解决你的问题,请参考以下文章

除了 pandas 和 dask 之外,还都有哪些更快的读取大数据集和应用行明智操作的方法?

使用java读取xlsx格式的execl,除了poi还都有哪些方式

除了 gcc 还都有哪些编译器可以向量化代码?

除了Arduino,还都有哪些开源硬件

web请求除了get和post还都有哪些方式?

除了 React,还都有哪些 JS 框架允许实时编辑?