弹簧集成中的运行时可配置动态路由

时间:2014-04-23 15:32:39

标签: java spring spring-integration

我想构建一个带有多个出站网关的方案,可以在运行时添加(假设它从2个网关开始,但能够在运行时添加第3到第4个)。我想为他们的功能设置http-outbound-gateway,但是想在运行时构建他们的实例。 问题在于在春季环境中注册订阅这些网关的频道。 Atm我有3个想法,不能选择正确的。

  1. 使用registerBeanDefinition("<my id>", definition)或类似内容将新创建的频道注册到应用程序上下文。对这种情绪不满意的原因是不希望对已经建立的环境进行如此粗略的访问。

  2. 预定义的通道列表,并限制插入具有此预定义通道数的新出站网关。变种适合我,因为计划的网关很少,对我来说似乎很安全,虽然不是很整洁。

  3. 在搜索解决方案时,我找到了org.springframework.integration.support.channel.BeanFactoryChannelResolver org.springframework.integration.support.channel.HeaderChannelRegistry似乎适合我使用原型通道bean。 (我必须要求的地图名称)。但是由于org.springframework.integration.support.channel.BeanFactoryChannelResolver没有这个注册表的公共setter,我不确定我可以安全地使用它,虽然我考虑使用自己的ChannelResolver来满足这种需求。

  4. 解决这个问题的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

请参阅dynamic-ftp sample application。它使用每个子应用程序上下文添加ftp出站适配器。

实际上,动态路由器会路由到每个适配器的输入通道。