Dans "Spring Integration", le traitement est développé en connectant le traitement avec "channel", mais si vous souhaitez combiner plusieurs traitements en un seul traitement, il est pratique d'utiliser "chain".
Je vais omettre la définition de bean spécifique, mais lorsque la définition de flux suivante est faite
Avant d'appliquer la chaîne
<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
">
<!--Passerelle de messagerie-->
<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" />
Avec chain
...
Après avoir appliqué la chaîne
<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
">
<!--Passerelle de messagerie-->
<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>
Peut être écrit! Il présente également l'avantage d'éviter que la définition de flux ne se remplisse de «channel»: blush:.
Donc, le sujet principal est d'ici. Si vous développez une application compliquée, vous voulez une «chaîne» qui rassemble une «chaîne» qui rassemble plusieurs processus. En pensant à la façon d'écrire «chaîne», je l'ai écrit intuitivement comme ↓.
J'ai essayé de monter une chaîne
<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
">
<!--Passerelle de messagerie-->
<int:gateway id="gateway" default-request-channel="wwwChannel"
service-interface="com.example.WwwGateway">
<!--Chaîne qui associe le processus A et le processus B-->
<int:chain input-channel="wwwChannel" output-channel="zzzChannel">
<int:chain id="aProcess"/>
<int:chain id="bProcess"/>
</chain>
<!--Processus A-->
<int:chain id="aProcess">
<int:filter/>
<int:transformer />
<int:service-activator />
</chain>
<!--Processus B-->
<int:chain id="bProcess">
<int:filter/>
<int:transformer />
<int:service-activator />
</chain>
Donc, à la suite de l'exécution, une erreur d'exécution ……: déçu_relieved: Spécifiez un «canal d'entrée» approprié pour la «chaîne» du processus A et la «chaîne» du processus B, ou écrivez la «chaîne» du processus A dans la «chaîne» qui combine le processus A et le processus B. N'était pas bon.
J'étais inquiet pendant un moment, mais quand j'ai relu le document, la méthode était écrite: sueur:.
Au bas de 6.6.2 Configurer une chaîne, sous Appeler une chaîne depuis une chaîne
,
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.
Je vois……
Quand j'ai écrit la balise <int: gateway>
dans la chain
qui combine le processus A et le processus B et décrit le canal d'entrée
du processus A et du processus B dans l'attribut request-channel
, le comportement était attendu. Ta!
Tu l'as fait!
modifié
<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
">
<!--Passerelle de messagerie-->
<int:gateway id="gateway" default-request-channel="wwwChannel"
service-interface="com.example.WwwGateway">
<!--Chaîne qui associe le processus A et le processus B-->
<int:chain input-channel="wwwChannel" output-channel="zzzChannel">
<int:gateway request-channel="aChannel" />
<int:gateway request-channel="bChannel" />
</chain>
<!--Processus A-->
<int:chain id="aProcess" input-channel="aChannel">
<int:filter/>
<int:transformer />
<int:service-activator />
</chain>
<!--Processus B-->
<int:chain id="bProcess" input-channel="bChannel">
<int:filter/>
<int:transformer />
<int:service-activator />
</chain>
Lisez la documentation: joy:
Recommended Posts