java - 消息驱动Bean和消息消费顺序

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

我有一个 MDB,它订阅了一个主题,该主题发送消息,其内容最终保存到数据库。

我知道 MDB 是池化的,因此容器能够并行处理多个传入消息。就我而言,这些消息的消费(然后持久化)顺序很重要。我不希望 MDB 实例池在 JMS 主题中发布消息时使用并以不同的顺序保留消息。

这会是一个问题吗?如果是这样,是否有办法告诉容器在消费消息时遵循严格的传入顺序?

最佳答案

复制自 there:

为了确保接收顺序与客户端发送消息的顺序匹配,您必须执行以下操作:

  • 将 MDB 的 max-beans-in-free-pool 设置为 1。这确保了 MDB 是消息的唯一使用者。

  • 如果您的 MDB 部署在集群上,请将它们部署到集群中的单个节点,[...]。

  • 为了确保事务回滚和恢复时的消息排序,请配置自定义连接工厂,并将 MessagesMaximum 设置为 1,并确保未配置重新传递延迟。欲了解更多信息,请参阅[...]。

关于java - 消息驱动Bean和消息消费顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5314214/

相关文章:

java - 如何读取 MP3 文件标签

java - 通过 JavaPNS 发送通知时发生异常

java - log4j2 中 DenyAllFilter 的等价物是什么

JSF 2.0 : Validate equality of 2 InputSecret Fields (confirm password) without writing Code?

java - 如何对 javax.naming.Referenceable 的实现进行单元测试?

java - 我们可以使用非 Java 来使用 JMS 消息吗

spring - ACTIVEMQ - 订阅者在发布者之后启动时如何接收主题消息?

java - 同步 vs ReentrantLock vs AtomicInteger 执行时间

java - 如何将字节数组转换为 key 格式?

java - 具有可插入消费者的内部事件总线