1 回答
TA贡献1842条经验 获得超12个赞
根据Spring中的Java和Annotation配置,inboundAdapter
bean名称(本质上是bean方法名称)被准确地分配给您声明为bean的内容。在您的情况下,它是一个MessageSource
实现。您确实需要在控制总线命令中处理通过那个SourcePollingChannelAdapter
分配给您的 bean 。唯一的问题是我们需要找出一个正确的 bean 名称以从命令中引用它:MessageSource
@InboundChannelAdapter
AbstractEndpoint bean 名称使用以下模式生成:[configurationComponentName].[methodName].[decapitalizedAnnotationClassShortName]。例如,前面显示的 consoleSource() 定义的 SourcePollingChannelAdapter 端点获取 myFlowConfiguration.consoleSource.inboundChannelAdapter 的 bean 名称。另请参见端点 Bean 名称。
因此,我建议您参考端点 Bean 名称@EndpointId
建议,并与它一起使用@InboundChannelAdapter
:
@Bean
@InboundChannelAdapter(channel = "adapterOutputChanel", autoStartup = "false", poller = @Poller(fixedDelay = "1000"))
@EndpointId("myInboundAdapter")
public MessageSource<String> inboundAdapter() {
因此,您的控制总线命令将如下所示:"@myInboundAdapter.start()"
更新
用于连接的 Java DSL 变体MessageSource:
@Bean
public IntegrationFlow channelAdapterFlow() {
return IntegrationFlows.from(new MyMessageSource(),
e -> e.id("myInboundAdapter").autoStartup(false).poller(p -> p.fixedDelay(100)))
.channel(adapterOutputChanel())
.get();
}
添加回答
举报