2016-09-16 5 views
1

Ich habe vier untergeordnete Nachrichtenflüsse jeweils in einer eigenen Anwendung und in JAR-Datei verpackt.
Jeder Subflow wird als Springboot-Anwendung erstellt.
Jeder Subflow hat einen Eingangskanal und einen Ausgangskanal.
Wie Subflows behandelt wird, die in separaten Krug verpackt ist

Ich möchte, dass der Hauptstrom in seiner eigenen Spring-Boot-Anwendung sitzt, die nacheinander diese 4 Teilströme genannt wird.
Ist es möglich mit Federintegration?
Wenn es nicht möglich ist, was wäre der beste Ansatz, der möglich ist?
Ich suchte im Internet und Blick auf
How to handle subflows
https://github.com/spring-projects/spring-integration-flow
und alles andere, was ich aber immer noch nicht sicher feststellen können, wie Sie vorgehen.
https://github.com/spring-projects/spring-integration-flow Staaten, die Subflow verwenden müssen, ich
int-flow:flow id="subflow1"
in meinem xml haben, wie ich diese subflow1 meiner Subflow im separaten Gefäß verpackt tun zu binden.
Dann, wie würde ich diese Subflows in meinem Hauptfluss aufrufen, die Spring-Boot-Anwendung ist?
Sendet ich eine Nachricht an den Eingangskanal für jeden Unterablauf, um den Unterablauf zu starten oder etwas anderes zu tun? Danke, David

Beispiel für Subflow-XML-Datei.
I entfernt irrelevante Teile der Datei, um sie zu verkürzen und setzen ... anstelle der entfernten info

<int:channel id="createTwo"/> 
<int:service-activator input-channel="createOne" output-channel="createTwo"   
    ref="automationUtilities" method="createTwo"/>   
... 

<int:service-activator input-channel="createFive"   
    ref="automationUtilities" method="createSix"/>          

<bean id="automationUtilities" class="package.BeanName" /> 
<bean id="validator" class="package.anotherBeanName" /> 
<util:properties id="config" location="classpath:application.properties"/> 

Antwort

0

Wenn alle Ihre Anwendungen Frühlings-Boot sind, dann sind sie Microservices und je von ihnen lebt in seiner onw JVM. Daher reicht es nicht, nur input und output Kanal zu haben. Weil Sie nicht einfach eine Nachricht von einer JVM an eine andere senden können.

Da es sich bei allen um Spring-Boot handelt, sollten Sie einige REST-Funktionen hinzufügen. Zumindest einfache <int-http:inbound-gateway>, um Nachrichten von der externen Welt zu empfangen. Und <int-http:outbound-gateway> REST-Anforderung von einer Anwendung zu einer anderen durchzuführen.

OTOH in Betracht ziehen, Spring Cloud Stream Projekt zu verwenden, das genau für Messaging Microservices Kommunikation gegründet wird. Es basiert auf dem Binder Konzept, derzeit Kafka oder RabbitMQ.

Verwandte Themen