2013-05-13 49 views
2

我們的一位客戶有一個基於JMS的實現,其中有讀/寫消息的隊列。 JMS客戶端需要寫入出站隊列,並且它將從入站隊列中讀取響應。 JMS客戶端將部署在多個站點上,並將與單個出站隊列通信以撰寫消息,並將從入站隊列(僅限一個)讀取響應。考慮有100個唯一的出站請求,然後消費者針對發送的請求獲得100個不同的響應的情況(假設消息得到正確傳送)。如何確保消費者從入站隊列中讀取的消息適用於指定的收件人?我們是否必須編寫自己的邏輯來映射請求/響應?或者JMS具有基於連接ID等的任何傳遞機制,以便消息被傳遞給正確的請求者。非常感謝您,需要您的專家投入正確設計應用程序。我使用的JMS提供程序是Apache ActiveMQ。單個隊列的JMS多個使用者

問候, SumeetÇ

回答

2

這聽起來像你需要REQUEST/REPLY ...

請求/應答 - 同步
隊列發送方發送一個REQUEST消息,然後在同一個線程,接收一個REPLY。發送線程阻塞,直到接收方回覆回覆消息,確保回覆是針對原始請求的。這是一個使用臨時隊列,REPLY_TO尋址和JMSCorrelationID一個基本設置...

Apache ActiveMQ Request/Reply
EAI Patterns for JMS Request/Reply

點至點 - 異步
如果客戶的JMS實現提供了不同的隊列發送請求和接收回復,您可以使用唯一的JMSCorrelationID異步發送消息,並且如果客戶發回的回覆具有相同的ID,則可以在另一個線程中接收到回覆消息,並將其與基於t他JMSCorrelationID。從技術上來說,REQUEST/REPLY除了阻塞並使用臨時隊列將響應消息發送回請求者而不是明確命名的隊列之外,其他功能的作用相同。

+0

非常感謝您的回覆。我現在可以更好地實施解決方案 – 2013-05-14 09:43:02

+0

不客氣!您可以通過點擊左邊的複選標記來接受這個答案! – raffian 2013-05-14 12:01:46

相關問題