簡體   English   中英

從單個隊列並發處理兩個或多個相同的 JMS 消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM