In Spring Integration
wird die Verarbeitung durch Verbinden der Verarbeitung mit channel
entwickelt. Wenn Sie jedoch mehrere Verarbeitungen als eine Verarbeitung kombinieren möchten, ist es praktisch, chain
zu verwenden.
Ich werde die spezifische Bean-Definition weglassen, aber wenn die folgende Flussdefinition gemacht wird
Vor dem Auftragen der Kette
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
">
<!--Messaging-Gateway-->
<int:gateway id="gateway" default-request-channel="wwwChannel"
service-interface="com.example.WwwGateway">
<int:filter input-channel="wwwChannel" output-channel="xxxChannel"/>
<int:transformer input-channel="xxxChannel" output-channel="yyyChannel" />
<int:service-activator input-channel="yyyChannel" output-channel="zzzChannel" />
Mit Kette
...
Nach dem Anbringen der Kette
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
">
<!--Messaging-Gateway-->
<int:gateway id="gateway" default-request-channel="wwwChannel"
service-interface="com.example.WwwGateway">
<int:chain input-channel="wwwChannel" output-channel="zzzChannel">
<int:filter/>
<int:transformer />
<int:service-activator />
</chain>
Kann geschrieben werden! Es hat auch den Vorteil, dass verhindert wird, dass die Flussdefinition voll von "Kanälen" wird: erröten :.
Das Hauptthema ist also von hier. Wenn Sie eine komplizierte Anwendung entwickeln, möchten Sie eine "Kette", die eine "Kette" zusammensetzt, die mehrere Prozesse zusammenfügt. Ich überlegte, wie man "Kette" schreibt, und schrieb es intuitiv als ↓.
Ich habe versucht, eine Kette zusammenzusetzen
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
">
<!--Messaging-Gateway-->
<int:gateway id="gateway" default-request-channel="wwwChannel"
service-interface="com.example.WwwGateway">
<!--Kette, die Prozess A und Prozess B zusammenfügt-->
<int:chain input-channel="wwwChannel" output-channel="zzzChannel">
<int:chain id="aProcess"/>
<int:chain id="bProcess"/>
</chain>
<!--Prozess A.-->
<int:chain id="aProcess">
<int:filter/>
<int:transformer />
<int:service-activator />
</chain>
<!--Prozess B.-->
<int:chain id="bProcess">
<int:filter/>
<int:transformer />
<int:service-activator />
</chain>
Als Ergebnis der Ausführung ein Laufzeitfehler ……: enttäuscht_relieved: Geben Sie einen geeigneten "Eingangskanal" für die "Kette" des Prozesses A und die "Kette" des Prozesses B an oder schreiben Sie die "Kette" des Prozesses A in die "Kette", die den Prozess A und den Prozess B kombiniert. War nicht gut
Ich war eine Weile besorgt, aber als ich das Dokument noch einmal las, war die Methode geschrieben: Schweiß :.
Am Ende von 6.6.2 Konfigurieren einer Kette unter "Aufrufen einer Kette aus einer Kette heraus" unter
Sometimes you need to make a nested call to another chain from within a chain and then come back and continue execution within the original chain. To accomplish this you can utilize a Messaging Gateway by including a
element.
Das war's……
Als ich das Tag "<int: gateway>" in die "Kette" schrieb, das Prozess A und Prozess B kombiniert, und den "Eingangskanal" von Prozess A und Prozess B im Attribut "Anforderungskanal" beschrieb, wurde das Verhalten erwartet. Ta! Du hast es geschafft!
Überarbeitet
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
">
<!--Messaging-Gateway-->
<int:gateway id="gateway" default-request-channel="wwwChannel"
service-interface="com.example.WwwGateway">
<!--Kette, die Prozess A und Prozess B zusammenfügt-->
<int:chain input-channel="wwwChannel" output-channel="zzzChannel">
<int:gateway request-channel="aChannel" />
<int:gateway request-channel="bChannel" />
</chain>
<!--Prozess A.-->
<int:chain id="aProcess" input-channel="aChannel">
<int:filter/>
<int:transformer />
<int:service-activator />
</chain>
<!--Prozess B.-->
<int:chain id="bProcess" input-channel="bChannel">
<int:filter/>
<int:transformer />
<int:service-activator />
</chain>
Lesen Sie die Dokumentation: Freude:
Recommended Posts