2014-04-23 110 views
2

我想要建立一個帶有幾個出站網關的方案,這些出站網關可以在運行時添加(可以說它以2個網關開始,但能夠在運行時添加3-4個節點)。我想爲其功能提供http出站網關,但希望在運行時構建它們的實例。 問題是在春天的上下文中註冊訂閱這些網關的頻道。 Atm我有3個desicions,不能選擇正確的一個。春季集成中運行時可配置的動態路由

  1. 將新創建的頻道註冊到registerBeanDefinition("<my id>", definition)或類似的應用程序上下文。不滿意這個desicion原因,寧願不對已經建立的上下文進行這樣的粗略訪問。

  2. 具有預定義的頻道列表,並限制插入新的出站網關和此預定義頻道的數量。變體適合我,因爲只有少數網關計劃,並且對我來說似乎相當安全,雖然不是很整潔。

  3. 尋找解決方案,我發現org.springframework.integration.support.channel.BeanFactoryChannelResolverorg.springframework.integration.support.channel.HeaderChannelRegistry這似乎適合我使用原型通道bean。 (我需要參考的地圖名稱)。但因爲org.springframework.integration.support.channel.BeanFactoryChannelResolver沒有公共setter這個註冊表,我不知道我可以安全地使用它,但我認爲使用自己的ChannelResolver滿足這種需求。

解決此問題的正確方法是什麼?

回答

1

查看dynamic-ftp sample application。它爲每個使用子應用程序上下文添加了ftp出站適配器。

實際上,動態路由器將路由到每個適配器的輸入通道。