通过注释进行Spring Integration Control总线配置

Eug*_*kov 5 java design-patterns spring-integration

只是一个简单的问题: 有没有办法通过注释配置Spring Integration Control Bus(没有任何xml)

<control-bus input-channel="operationChannel"/>
Run Code Online (Sandbox Code Playgroud)

Art*_*lan 9

Spring集成的Java DSL提供了对此事的东西:

@Bean
public IntegrationFlow controlBusFlow() {
     return IntegrationFlows.from("operationChannel").controlBus().get();
}
Run Code Online (Sandbox Code Playgroud)


Gar*_*ell 6

@Bean
@ServiceActivator(inputChannel = "controlBusChannel")
public ExpressionControlBusFactoryBean controlBus() throws Exception {
    ExpressionControlBusFactoryBean controlBus = new ExpressionControlBusFactoryBean();
    return controlBus;
}
Run Code Online (Sandbox Code Playgroud)

请注意,注释中的任何outputChannel内容都将被忽略; 它是在公交车上定义的.

通常,控制总线的输出通道被省略,其中正常的请求/应答操作的结果,例如@someBean.isRunning()(如果someBean实现Lifecycle)返回到replyChannel头部(例如,到MessagingTemplate.sendAndReceive()操作或消息传递网关).

如果需要将控制总线操作结果发送到其他位置,请将输出通道添加到工厂bean.

MessageHandler @Bean现在可以使用任何(或创建一个的工厂bean)进行注释@ServiceActivator.请参阅文档.