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。
每一种消息消费者都可以同步或异步接收消息。
MessageConsumer
、JMSConsumer
、QueueReceiver
和TopicSubscriber
可以使用这些方法同步接收消息:
Message receive()
:返回为消费者生成的下一条消息
Message receive(long timeout)
:返回为
在指定超时时间内到达的消费者
Message receiveNoWait()
:如果立即可用,则返回为 cnsumer 生成的下一条消息。
每一种消息消费者都可以使用消费者的setMessageListener()
方法注册一个实现JMS MessageListener
接口的对象。当消息到达消费者时,提供者通过调用侦听器的onMessage
方法来传递它们。
【讨论】:
以上是关于Java 中除了 MDB 之外还都有哪些其他可能性来对消息消费者进行编程?的主要内容,如果未能解决你的问题,请参考以下文章
除了 pandas 和 dask 之外,还都有哪些更快的读取大数据集和应用行明智操作的方法?