【发布时间】:2014-04-23 15:32:39
【问题描述】:
我想构建一个包含多个出站网关的方案,可以在运行时添加(假设它从 2 个网关开始,但能够在运行时添加第 3-4 个网关)。我想为它们的功能提供 http-outbound-gateways,但想在运行时构建它们的实例。 问题在于在春季上下文中注册订阅这些网关的频道。 Atm 我有 3 种选择,但无法选择正确的一种。
使用
registerBeanDefinition("<my id>", definition)或类似的东西将新创建的通道注册到应用程序上下文。对这个决定不满意的原因是不想对已经构建的上下文进行如此粗暴的访问。具有预定义的通道列表,并限制插入具有此预定义通道数量的新出站网关。变体适合我,因为计划中的网关很少,而且对我来说似乎很安全,虽然不是很整洁。
搜索解决方案,我找到了
org.springframework.integration.support.channel.BeanFactoryChannelResolverorg.springframework.integration.support.channel.HeaderChannelRegistry似乎适合我与原型通道 bean 一起使用。 (我必须参考我需要的地图名称)。但是,由于org.springframework.integration.support.channel.BeanFactoryChannelResolver没有此注册表的公共设置器,我不确定我是否可以安全地使用它,尽管我考虑使用自己的 ChannelResolver 来满足此需求。
解决这个问题的正确方法是什么?
【问题讨论】:
标签: java spring spring-integration