使用Spring Integration,是否可以在程序运行时动态创建其他入站通道适配器?
背景: 我对SI和S-Batch很新。我正在使用SI来轮询我们的数据库,以获取我用于在SB中创建作业的信息。从本质上讲,有一些业务规则可用于我从数据库中提取的记录何时需要转换为工作。我打算为每个规则制作一个入站通道适配器。例如,处于初始状态的项目规则为:
<int-jdbc:inbound-channel-adapter
query="select [id] from [MY_DATA] where status_name = 'INITIAL'"
....
/>
我计划检索规则信息并将其解析为适配器。我将从数据库中检索status_name“INITIAL”而不是上面的硬编码规则,并使用它来构建适配器。
答案 0 :(得分:1)
是的,你可以这样做。您应该实例化SourcePollingChannelAdapter
并为其设置MessageSource<?>
以及其他重要选项,例如beanFactory
和outputChannel
。之后你应该start()
第一个开始投票。
但是......这需要吗?请更具体一点。这样做的原因是什么?
也许还有另一个托管组件解决方案?..
<强>更新强>
SourcePollingChannelAdapter
是管理轮询(调度)和MessageChannel的主要组件。制作信息的艰巨任务是MessageSource<?>
的肩膀。对于您的JDBC案例,有JdbcPollingChannelAdapter
。
是的,您应该为您的服务注入BeanFactory
,并为这些动态适配器注入MessageChannel
。我不确定您是否能够将动态适配器填充回应用程序上下文。
有关详细信息,请参阅此示例:https://github.com/spring-projects/spring-integration-samples/tree/master/advanced/dynamic-ftp