Я хотел бы выполнить что-либо после завершения обслуживания любого / всех активаторов службы.Поток определяется следующим образом:
@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) когда выполнение активатора службы не было успешным.
Если исполнитель службы известен / определен с потоком, это может быть достигнуто путем определения другогопоток и добавить выходной канал и ошибку.Не уверен, как добиться того же в моем случае.