Ich habe grundlegende Frage in Spring-Integration. Ich habe versucht, in anderen Threads zu suchen, war aber nicht mit den Antworten zufrieden. Also hier sind meine Fragen. Jeder Tipp wird sehr geschätzt.
Ich versuche, Daten aus 4 verschiedenen Quellen parallel zu sammeln und die Daten zu aggregieren.
Mein Verständnis (nach einem der Threads, die ich zuvor gelesen habe), ist jeder Ausgangskanal eines Splitters, wenn es sich um einen direkten Kanal handelt, dann wird die Anfrage sequentiell weitergeleitet.
Aber Ausgangskanal des Splitter ist ein Empfängerlisten-Router. Beim Debuggen wurde die Anfrage sequenziell weitergeleitet. Nach einer Analyse habe ich herausgefunden, dass wir den Payload-Typ-Router parallel verarbeiten können.
Also änderte ich den Router zum Payload-Typ-Router und immer noch wird die Anfrage der Reihe nach geroutet.
Also änderte ich meine Strategie und verwendete einen Publish-Subscriber Channel und verband die Ausgabe aller abonnierenden Kanäle mit einem Aggregator, so dass ich die Ergebnisse aggregieren konnte. Ich konnte die Daten parallel bereitstellen, aber ich sehe nicht, dass die Antwort zu aggregiert weitergeleitet wird. Mache ich es falsch? Bitte vorschlagen!
Spring Integration Aggregator kombiniert mit Publish Subscriber
<int:publish-subscribe-channel id="PublishSubscriberChannel"
task-executor="taskExecutor" />
<task:executor id="taskExecutor" pool-size="5" />
<int:service-activator input-channel="PublishSubscriberChannel"
ref="lookUpService" method="lookupSource1" output-channel="lookupAggregatorChannel" />
<int:service-activator input-channel="PublishSubscriberChannel"
ref="lookUpService" method="lookupSource2" output-channel="lookupAggregatorChannel" />
<int:service-activator input-channel="PublishSubscriberChannel"
ref="lookUpService" method="getVehicleInfoWithAdditionalAttributes"
output-channel="lookupAggregatorChannel" />
<int:service-activator input-channel="PublishSubscriberChannel"
ref="lookUpService" method="lookupSource4" output-channel="lookupAggregatorChannel" />