Ich habe drei verschiedene Systeme. Ich verwende die Spring-Integration, um Daten in all diesen Systemen zu synchronisieren.Fehlerbehandlung bei der Federintegration
System 1 Anrufe ---> System 2 über http: Inbound-Gateway
<int-http:inbound-gateway id="gateway"
path="/save" supported-methods="POST, PUT"
request-channel="requestChannel" reply-channel="replyChannel"
request-payload-type="com.model.Request"
mapped-request-headers="source" error-channel="errorChannel" />
System 2 wird Service-Methode aufrufen, um Daten zu beharren, die Antwort zurück, wenn Anfrage sonst gültig wirft Ausnahme
<int:service-activator ref="serviceMethod"
method="saveIfValid" input-channel="requestChannel"
output-channel="serviceOutput" />
<int:recipient-list-router id="id1"
input-channel="serviceOutput">
<int:recipient channel="system1" />
<int:recipient channel="system3" />
</int:recipient-list-router>
Ich muss Service-Antwort nur an System 1 und System 3 senden, wenn der Vorgang erfolgreich ist. Nach dem Aufruf der Servicemethode wird auf der Grundlage der Antwort der Servicemethode die Anforderung für System 3 mit dem Transformer generiert. Nach dem Transformator stelle ich eine Anfrage in die mq-Warteschlange.
<int:transformer id="transformer1"
method="convert" input-channel="system3"
output-channel="jmsInput">
<bean
class="com.transformer.System3Transformer" />
</int:transformer>
<int-jms:outbound-channel-adapter id="adapter"
channel="jmsInput" destination-name="queueName">
</int-jms:outbound-channel-adapter>
Aktualisiert JMS-Ausgangs Code
<int-jms:outbound-channel-adapter id="jms1"
\t \t channel="jmsIn" destination-name="queueName">
\t \t <int-jms:request-handler-advice-chain>
\t \t \t <bean
\t \t \t \t class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice">
\t \t \t \t <property name="onSuccessExpression" value="T(Boolean).TRUE" />
\t \t \t \t <property name="successChannelName" value="afterSuccessDeleteChannel" />
\t \t \t <property name="onFailureExpression" value="T(Boolean).FALSE" />
\t \t \t \t <property name="failureChannelName" value="afterFailRenameChannel" />
\t \t \t </bean>
\t \t </int-jms:request-handler-advice-chain>
\t </int-jms:outbound-channel-adapter>
Meine Frage ist
- wenn Serviceklasse nicht ich brauche Fehlerantwort zu senden und stoppen den Fluss
- ich f Service-Methode erfolgreich persistent Daten, aber die Transformation schlägt fehl, sollte System 1 Erfolg Antwort und Fehler sollte protokolliert werden.
- Hier, wie ich bin Fehlerkanal in Ausgangsadapter verwendet, auch wenn Fehler in Transformator auftritt, wird es an System 1 zurückgegeben.
- Bitte schlagen Sie vor, wie kann ich mit Fehler ohne globale Fehler Kanal und wie Fehler in Jms Outbound umzugehen Adapter.
- danke für meine quesion Beantwortung
Danke, meine Frage zu beantworten. wenn irgendein Fehler in auftritt, ich will nur, dass es protokolliert, will ich keinen Fehler zu System 1 anzeigen. Kannst du bitte helfen, dies auch zu implementieren? –
' \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t ' –
Bitte siehe obigen Code. Es geht sowohl zum Erfolgskanal als auch zum Fehlerkanal. Können Sie bitte erläutern, wie es bewertet, ob es erfolgreich oder fehlgeschlagen ist? . –