从单个队列中同时处理两个或更多相同的JMS消息

问题描述 投票:1回答:1

请考虑以下情况:

Application - MessageReaderApplication (Spring Boot Application)
Deployed in - PaaS_node_1 and PaaS_node_2 
Queue Manager - QM
Queue - QM_QUEUE
Concurrency - 2

MessageReaderApplication从QM_QUEUE读取消息,并根据消息中的client_number处理它们(client_number是消息的唯一属性)。该应用程序对于两条独立的消息(不同的[[client_number)表现良好,因为一条消息的处理独立于其他消息。

问题出在同一时间两次在同一时间两次为同一客户端(相同

client_number)发送消息时。在这种情况下,理想的操作是在第二条消息之前处理第一条消息。但是在这里我们无法预测消息的执行顺序。假设PaaS_node_1选择了第一条消息并开始对其进行处理,同时PaaS_node_2选择了第二条消息,并在PaaS_node_1处理第一条消息之前完成了处理。

我们如何在JMS消息传递中实现这种并发控制?
java spring-boot spring-cloud spring-jms
1个回答
0
投票
您或者需要为每个clientId设置单独的队列,或者为每个client ID设置单独的侦听器(使用消息选择器仅获取那些消息)。>
© www.soinside.com 2019 - 2024. All rights reserved.