java 如何在同一应用程序的多个示例之间维护消息的顺序

edqdpe6u  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(147)

我们有一个非常简单的应用程序,它从MQ读取消息,并将消息转换为某种不同的格式,然后将其发送到另一个MQ。该应用程序部署在Openshift环境中。因此,在任何给定时间,同一应用程序的多个示例将运行。我们在应用程序中不使用任何DB。

  • 我们希望保持消息的顺序。* 基本上,在阅读消息时,它们以某种顺序出现在源MQ中(例如,A1-A2-A3-A4-A5),那么在转换后,它们在输出MQ中的顺序应该相同。

让我们假设事件A1发生了,然后是A2,然后是A3,然后是A4,然后是A5。事件A1和A3相互关联意味着具有某种关系。同一应用程序的多个示例正在专用队列上侦听这些事件。假设有5个应用程序示例正在运行,那么可能会出现这样的情况,即选择了A3事件的示例已经完成处理。而A1事件处理仍未完成。所以基本上我想确保A3处理的输出不应该被发送到输出队列,直到它的前一个事件A1成功完成并发送到输出队列。
有人能帮我解决这个问题吗?

du7egjpx

du7egjpx1#

IBM MQ具有用于将消息分组在一起的内置特性。我建议你看看Message Groups

dwbf0jvd

dwbf0jvd2#

当消费消息时,根据分类存储在文件中。当一个消息被消费时,根据分类决定一个组。更新文件。它可以通过第一种方式的第一个答案来完成,你必须在程序上指定一个消息的组ID,它将作为一个组来处理消息。

相关问题