【发布时间】:2018-12-20 16:17:36
【问题描述】:
我想在服务任何/所有服务激活器完成执行后执行一些操作。流程定义如下:
@Bean
public IntegrationFlow myFlow(MessageSource<Object> someMessageSource) {
return IntegrationFlows.from(someMessageSource,
c -> c.poller(Pollers.fixedRate(1, SECONDS)
.maxMessagesPerPoll(10)))
.channel(mySourceChannel())
.get();
}
@Bean
public MessageChannel mySourceChannel() {
return new ExecutorChannel(executor());
}
两个服务激活器定义为
public static class MyFooActivator {
@ServiceActivator(inputChannel = "mySourceChannel")
public void doSomething(FooTask event) {
//handle foo task
}
}
public static class MyBarActivator {
@ServiceActivator(inputChannel = "mySourceChannel")
public void doSomething(BarTask event) {
// handle bar task
}
}
如您所见,服务激活器不是作为集成流程的一部分定义的,而是通过注释定义的。目标是在 1) 服务激活器执行成功 2) 服务激活器执行不成功时执行一些代码。
如果服务执行器是已知的/使用流定义的,这可以通过定义另一个流并添加输出通道和错误来实现。不确定,在我的情况下如何实现同样的效果。
【问题讨论】:
标签: spring-integration spring-integration-dsl