Lors de l'exécution de l'application, le flux s'arrête sur routeToRecipients et les autres composants n'ont pas été exécutés. (Voir les commentaires en ligne dans le code ci-dessous) Aucune erreur n'est survenue. Mais lorsque je supprime routeToRecipients(), les autres composants s'exécutent.Spring Integration DSL: ne pas exécuter d'autres composants après l'exécution de routeToRecipients
Y a-t-il un problème avec mon flux d'intégration?
@MessagingGateway
public interface gateway {
@Gateway(requestChannel = "request.input")
void process(List<Msg> test);
}
@Bean(name = PollerMetadata.DEFAULT_POLLER)
public PollerMetadata poller() {
return Pollers.fixedDelay(1000).get();
}
@Bean
public IntegrationFlow flow() {
return IntegrationFlows.from("request.input")
.split()
.channel(MessageChannels.executor(Executors.newCachedThreadPool()))
.transform(this.transformer::transform)
.routeToRecipients(r ->
r.recipient("channel1")
.recipient("channel2")
.recipient("channel3")
.recipient("channel4"))
.transform(this.transformer::transform2) // <---this is not executed :(
.handle(new GenericHandler<Msg>() { // <---this too is not executed
@Override
public Object handle(Msg payload, Map<String, Object> headers) {
System.out.println("test service activator!");
return null;
}
})
.get();
}
@Bean
public IntegrationFlow flow1() {
return IntegrationFlows.from("channel1")
.handle(new GenericHandler<Msg>() {
@Override
public Object handle(Msg payload, Map<String, Object> headers) {
System.out.println("Test route Channel 1")
return payload;
}
})
.channel("output")
.get();
}
@Bean
public IntegrationFlow flow2() {
return IntegrationFlows.from("channel2")
.handle(new GenericHandler<Msg>() {
@Override
public Object handle(Msg payload, Map<String, Object> headers) {
System.out.println("Test route Channel 2")
return payload;
}
})
.channel("output")
.get();
}
@Bean
public IntegrationFlow flow3() {
return IntegrationFlows.from("channel3")
.handle(new GenericHandler<Msg>() {
@Override
public Object handle(Msg payload, Map<String, Object> headers) {
System.out.println("Test route Channel 3")
return payload;
}
})
.channel("output")
.get();
}
@Bean
public IntegrationFlow flow4() {
return IntegrationFlows.from("channel4")
.handle(new GenericHandler<Msg>() {
@Override
public Object handle(Msg payload, Map<String, Object> headers) {
System.out.println("Test route Channel 4")
return payload;
}
})
.channel("output")
.get();
}
Merci Gary! Cela aide vraiment. :) – Chinwei