2016-09-07 73 views
0

我看到我公司的一個應用程序使用JMS進行併發調用。該應用程序是一個用Spring編寫的web服務。這使得一些外部呼叫。當收到某個操作的請求時,它將一些消息發送到JMS隊列,並由一個MDB處理這些消息。然後,應用程序會整理所有響應,將其映射回其數據模型並返回響應。我過去曾經使用過JMS來開火和忘記呼叫,但我無法弄清楚應用程序如何等待來自JMS隊列的響應。請你能解釋一下是否有辦法做到這一點?並行處理 - JMS

+0

完全是一個猜測,但它聽起來像需要有某種方式來說「我完成了」。您仍然可以使用fire並忘記,但雙方都需要知道消息流何時完成。異步體系結構中的「毒丸」/ EOF類型的設計很常見,它們並非完全異步。 – stdunbar

回答

0

Vicky,這樣做的一種方式是使用業務關聯。真正意義上的消息傳遞是異步的。但是可以使用「僞同步」呼叫。做到這一點的方法是在發佈請求時使用一個ID並在同一個線程上使用JMSMessageSelector(使用相同的ID)輪詢響應。此外,如果存在多個後端,您也可以進行聚合,在聚合和發送響應之前,也可以通過在消息中包含部件ID並進行輪詢以查看是否所有「部件已組裝」。 The JMS Message Selector。模式的高層次概述記錄here以及

+0

謝謝拉姆!!!!! –

+0

誰投了票,請做理由讓我能更好地回答這個問題? –

+0

有人正在貶低我所有的問題和認可的答案。我認爲你的回答沒有任何問題。對不起。 –