2014-09-25 28 views
0

是否有一種優雅的方式來定義一個具有多個@ServiceActivator方法(或類似的東西)的單個@MessageEndpoint bean,其中方法的參數類型被隱式地用作有效載荷 - 型過濾器?帶有隱式有效載荷類型路由的多個@ServiceActivator方法

的想法是有一個單一的服務端點,可以處理不同類型的有效載荷毫不費力地通過調度的參數類型,這緩解了額外的服務方法上下行執行略有不同。

我知道Google Guava的EventBus,它使用匹配的參數類型將事件對象分派到任何註冊的@Subscribe方法。我目前正在使用這種方法,但我想知道Spring集成是否也是(可能)。

+0

截至目前,您需要一個基於內容的路由器。目前尚不清楚你的建議是否是一個很好的通用規則;如果我想將消息發送到多個端點,該怎麼辦? – chrylis 2014-09-25 10:50:26

+0

爲了將其交付給多個端點,您只需定義多個端點。沒有人阻止你...... :) – Robin479 2014-09-26 12:12:24

回答

0

在XML中,一個<service-activator ... ref="foo" />(沒有method)將解析爲基於有效載荷類型的方法,只要沒有歧義。

4.0或更高版本,可以使用...

@Bean 
@ServiceActivator(...) 
public MessageHandler foo() { 
    ... 
} 

返回與targetObjectServiceHandlingFactoryBean你的POJO(同樣,沒有方法名)。

請注意,在這種情況下,您必須在工廠bean上設置outputChannel(忽略註釋中的outputChannel屬性)。

相關問題