Spring 通过注释集成控制总线配置

Spring Integration Control Bus configuration via annotations

一个简单的问题: 有什么方法可以通过注释配置 Spring Integration Control Bus(没有任何 xml)

<control-bus input-channel="operationChannel"/>

?

Spring Integration Java DSL 提供了有关此事的资料:

@Bean
public IntegrationFlow controlBusFlow() {
     return IntegrationFlows.from("operationChannel").controlBus().get();
}
@Bean
@ServiceActivator(inputChannel = "controlBusChannel")
public ExpressionControlBusFactoryBean controlBus() throws Exception {
    ExpressionControlBusFactoryBean controlBus = new ExpressionControlBusFactoryBean();
    return controlBus;
}

请注意,注释上的任何 outputChannel 都将被忽略;它是在总线本身上定义的。

通常情况下,控制总线的输出通道会被省略,而正常的 request/reply 操作的结果,例如 @someBean.isRunning() (如果 someBean 实现 Lifecycle 例如)回到replyChannel header(例如 MessagingTemplate.sendAndReceive() 操作或消息传递网关)。

如果您需要将控制总线操作结果发送到其他地方,请向工厂 bean 添加一个输出通道。

任何 MessageHandler @Bean(或创建一个的工厂 bean)现在都可以使用 @ServiceActivator 进行注释。参见 the documentation