2016-04-07 46 views
1

我想實現這樣的事情:如何在Spring XD的「側通道」上發送消息?

[Source] --> [Splitter] --B--> [Processor] --B--> [Aggregator] ---> [Sink] 
       |          ^
       |          | 
       |--------------------C-------------------| 

幾個處理器後至極包含業務邏輯, 特殊的生產應與控制消息一起發出B型的幾個消息C.

處理器進一步的業務邏輯將處理這些消息。

聚合器應該「收集」所有結果以及控制消息。

控制消息將基本上包含數字的生成消息(B),因此聚合可以具有B的所有預期的消息是否

  1. 已經到達
  2. 超時已發生
知識

我知道,聚合器可以通過使用消息頭來推斷分離器期望的消息數量,但是如果沒有消息到達它,它是否也會超時?

一般來說:變壓器是否可以有多個輸入或輸出通道?

回答

1

2第一 -

標準聚集器模塊具有timeout參數(缺省值爲50秒)。

它是通過一個消息組存儲收割器實現的,該消息組存儲收割器每超時運行一次 - 所以實際超時將高達2 x timeout,平均值爲1.5 x timeout

聚合器現在有一個group-timeout屬性,它比使用reapear更準確;它需要一個定製的聚合器處理器來使用它。它也有一個group-timeout-expression,所以超時可以根據運行時間條件(例如當前組大小)而變化。

現在1 -

沒有標準機構以從1個模塊發送側頻帶數據到另一個。通常,模塊通過設置消息標題相互通信。這就是標準分配器向聚合器發送信息的方式(sequenceNumbersequenceSize標題)。

您可以使用自定義ReleaseStrategy創建自定義聚合器處理器以使用其他標頭。

一般來說:變壓器是否可以有多個輸入或輸出通道?

不適用於XD,但後續項目(spring-cloud-stream)支持將多個輸入/輸出綁定到應用程序。

相關問題