簡體   English   中英

使用JMS作為請求/響應服務

[英]Using JMS as a request/response service

使用JMS作為請求/響應服務有各種實現。 我想知道理想的實現。 以下是這些不同的實現。


1)永久請求隊列,動態響應隊列

所有請求消息都發布到指定回復隊列的單個請求隊列中。 該服務使用請求消息並將消息發布回動態回復隊列。

  • 不需要相關ID。
  • 其相應響應隊列的多個消費者

2)永久請求隊列,永久響應隊列

所有請求消息都發布到單個請求隊列中,在jms屬性中指定唯一ID。 唯一ID存儲在本地。 服務使用請求消息並將消息發布回響應隊列。 單個響應使用者將使用該消息並根據唯一ID進行適當操作。

  • 需要相關ID。
  • 響應隊列的單個使用者

3)永久請求隊列,永久響應主題

所有請求消息都發布到單個請求隊列中,在jms屬性中指定唯一ID。 該服務使用請求消息,並在jms屬性中將具有相同唯一ID的消息發布回主題。 響應的使用者將設置消息選擇器以僅選擇包含唯一ID的消息。

  • 需要相關ID。
  • 響應主題的多個消費者

有誰知道其他實現? 哪些實現是使用JMS作為請求/響應服務的理想解決方案?

這就是我通常所做的:請求發布到'永久','眾所周知'隊列。 在請求消息中,sender指定replyTo隊列,該隊列可以是永久性的或動態的,具體取決於您的應用程序 需求。

應始終至少使用合理唯一的id / correlation id來跟蹤日志文件中的消息的可跟蹤性。它可能位於JMS頭級別或有效負載級別(例如SOAP messageId),具體取決於您的要求。

我已經使用了第一個和第三個實現。 我不確定第二個,因為當一個消費者可能餓死另一個消費者時,多個消費者的單個隊列會引起問題。 為避免這種情況,我們可能需要有一個調度程序 ,這可能導致可伸縮性問題,因為需要為每個使用者添加新隊列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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