我想使用GlassFish中的OpenMQ进行记录。我认为我的组件可以将消息放在此队列上,如果只有一个mdb消耗它,我应该能够按照它们排队的顺序接收所有消息。这会起作用吗? 可以保留消息顺序吗?
仅供参考,演示文稿中有一张幻灯片,最初让我相信JMS提供了一个订单,显然这是误导。
幻灯片8的成绩单:
什么是JMS? •面向消息的中间件的基于Java的api。 •它 使用以下概念(以及其他)> 消息顺序是 保证>消息的可靠性级别确定 已发送>事务(要发送或生成的消息的分组 在一起)支持>消息的格式由 生产者>提供两种消息传递方式(点对点和 发布 - 订阅)版权所有Sun Microsystems Inc.版权所有 保留。 [8]
http://www.slideshare.net/alexismp/openmq-aquarium-paris-presentation
以下这些答案表明JMS结构不保证订单。但我在想如果我只有一个MDB,即使用容器并发的单例,那么我至少可以享受一个排队顺序。
请参阅:
答案 0 :(得分:1)
我不担心确保Queue本身的顺序。只需在消息有效负载中包含一个时间戳字段,然后对该事件进行排序。当在极高流量条件下额外数据不可接受时,这只会成为一个问题,但在这些情况下,无论如何都可能暂时恢复到本地日志记录。
拥有附加字段还可以确保如果某个组件失去与Queue的连接,那么用于提前一小时传递的消息仍然具有正确的时间和“订单”,当它们进入消费MDB时。 / p>