2017-08-02 29 views
1

我在考慮Spring Cloud Stream是否適合我們正在考慮建立的特定系統。目前有一個Monolith(ESB)目前正在使用,但我們希望通過微服務的良好性(尤其是春季雲生態系統)獲益。Spring Cloud |收集來自多個目的地的響應

我們以5個請求/秒的速率接收來自輸入源(JMS隊列,ActiveMQ具體)的請求。我們需要有不同的路由規則(基於有效負載或某些派生邏輯),並將消息路由到不同的輸出目的地(比如A,B,C)。輸出目標是JMS隊列。

最後,我們必須從A,B,C(通過聽不同的隊列集)接收3個響應,並混合最終響應。這個響應最終被分發到另一個輸出通道(這是另一個JMS隊列)。

有幾個例子,比如當A的響應超過'5'秒時,我們要混合'B'和'C'的響應以及'A 」。 'B'和'C'也一樣。

另外,目的地'A','B'和'C'是動態的。未來我們可以有更多的目標系統'D','E'等。如果引入新系統,我們正在考慮不必更改主流業務層。

Spring Cloud Stream是正確的選擇嗎?我正在尋找更多具體的指針,以便聚合來自多個JMS隊列的響應(超時)並混搭響應。

+0

此主題實在太寬泛。您可以使用帶有JMS聯編程序的Spring Cloud Stream,您可以使用Spring Integration或Apache Camel。所有這些堆棧都可以做你想做的事。您需要編寫一些概念驗證代碼,而不是SO帖子。 – Strelok

回答

1

你說的是對於Aggregator EIP或其更強大的朋友Scatter-Gather完全足夠。

他們都在Spring集成可供選擇:

所以,你需要有一些correlationKey能夠所有響應聚集到同小組最後彙總。

此外還有group-timeout選項,允許您在一段時間後沒有全部回覆時釋放組。

相關問題