[英]How can I handle multiple messages concurrently from a JMS topic (not queue) with java and spring 3.0?
[英]Processing of two or more same JMS messages concurrently from a single queue
考慮以下場景:
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 消息傳遞中實現這種並發控制?
您需要為每個 clientId 設置一個單獨的隊列,或者為每個 client id 設置一個單獨的偵聽器(使用消息選擇器僅獲取這些消息)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.