Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 消息驱动Bean和消息消费顺序_Java_Jakarta Ee_Jms_Message Driven Bean - Fatal编程技术网

Java 消息驱动Bean和消息消费顺序

Java 消息驱动Bean和消息消费顺序,java,jakarta-ee,jms,message-driven-bean,Java,Jakarta Ee,Jms,Message Driven Bean,我有一个MDB,它订阅了一个主题,该主题发送的消息的内容最终被持久化到DB 我知道MDB是池化的,因此容器能够并行处理多个传入消息。在我的例子中,这些消息被消费(然后被持久化)的顺序很重要。我不希望MDB实例池在JMS主题中发布消息时使用消息,然后以不同的顺序持久化消息 这会成为一个问题吗?如果是这样,有没有办法告诉容器在使用消息时遵循严格的传入顺序?您应该能够将MDB池的大小限制为1,从而确保以正确的顺序处理消息 当然,如果您仍然需要一些并行性,那么您有几个选项,但这实际上取决于数据 如果某些

我有一个MDB,它订阅了一个主题,该主题发送的消息的内容最终被持久化到DB

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


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

您应该能够将MDB池的大小限制为1,从而确保以正确的顺序处理消息

当然,如果您仍然需要一些并行性,那么您有几个选项,但这实际上取决于数据

如果某些消息有一些共同点,并且处理顺序只在共享一个共同值的消息组中起作用,那么您可能需要有多个主题,或者使用队列和线程池

另一方面,如果与消息到达相关的逻辑的某些部分可以并行进行,而其他位不能并行进行,则需要将逻辑分成并行正常部分和并行非正常部分,并相应地处理这些位。

要确保接收顺序与客户端发送邮件的顺序匹配,必须执行以下操作:

  • 将MDB的空闲池中的最大bean数设置为1。这确保MDB是消息的唯一使用者

  • 如果MDB部署在集群上,请将其部署到集群中的单个节点[…]

  • 要确保事务回滚和恢复时的消息顺序,请将MessagesMaximum设置为1配置自定义连接工厂,并确保未配置重新传递延迟。有关更多信息,请参见[…]