0

我想使用GlassFish中的 OpenMQ 进行日志记录。我在想我的组件可以将消息放在这个队列上,如果只有一个 mdb 从中消费,我应该能够按照它们被排队的顺序接收所有消息。这会起作用吗?如何保持消息顺序?

仅供参考,演示文稿中有一张幻灯片最初让我相信JMS提供了订单,显然这是误导。

幻灯片 8 的文字记录:

什么是 JMS?• 面向消息中间件的基于Java 的API。• 它使用以下概念(除其他外) >保证消息顺序> 发送消息时确定可靠性级别 > 支持事务(一起发送或生成的消息分组) > 消息格式由producer > 提供两种消息传递方式(点对点和发布-订阅) 版权所有 Sun Microsystems Inc. 保留所有权利。[8]

http://www.slideshare.net/alexismp/openmq-aquarium-paris-presentation

下面的这些答案表明 JMS 结构不保证顺序。但我在想,如果我只有一个 MDB,即使用容器并发的单例,那么我至少可以享受入队顺序。

看:

4

1 回答 1

1

我不会担心确保队列本身的顺序。只需在您的消息有效负载中包含一个时间戳字段并在事后对其进行排序。仅当在极高流量条件下无法接受额外数据时,这才会成为问题,但在这些情况下,无论如何暂时恢复到本地日志记录可能是有意义的。

拥有附加字段还可以确保如果组件失去与队列的连接,则原定于一小时前交付的消息在到达消费 MDB 时仍然具有正确的时间和“顺序”。

于 2011-08-11T18:13:18.383 回答