0

エラーが発生した場合でも、エラーと応答のエラーメッセージを処理するように構成しました。そこで、inbound-adaptorにエラーチャネルを設定しました。

そして、Messageを使用して失敗したメッセージのヘッダー情報をキャッチしました。

    MessageTransformationException exBody = (MessageTransformationException) message.getPayload();
    message = exBody.getFailedMessage();

しかし、問題はip_connection_idが以下のように変更されていることです。

ip_connection_id = 127.0.0.1:51049:dd62fed7-00d2-4a7e-8f99-908b4766b862

ip_connection_id = 127.0.0.1:51051:d09d5273-a0e9-4ab9-ac73-f1963febf997

ip_connection_idを不変にする方法を教えてください。発信者に同期応答する必要があります。ありがとう。

4

1 に答える 1

0

他に何かが起こっているに違いありません。ip_connection_id不変であり、メッセージが受信された接続のIDを常に反映します。これは、接続のコンストラクターで設定され、変更されることはありません。別の接続IDのメッセージがある場合は、別の接続から送信されています。

ここでサンプルを変更しましたhttps://github.com/SpringSource/spring-integration-samples/tree/master/basic/tcp-client-server接続IDをエラーメッセージに追加します...

    <int:transformer id="errorHandler"
    input-channel="errorChannel"
    expression="payload.failedMessage.payload + ':' + payload.cause.message + ':' + payload.failedMessage.headers.ip_connection_id"/>

そして、すべてが期待どおりに機能しました...

preSend on channel 'toSA' ... ip_connection_id=localhost:48161:ef1b59ce-1495-417f-93d3-e38e935922f3

...

preSend on channel 'errorChannel'...

...

TcpNetConnection - TcpNetConnection - Message sent [Payload=FAIL:Failure Demonstration:localhost:48161:ef1b59ce-1495-417f-93d3-e38e935922f3

DEBUGロギングを使用して実行し、フローを通じてメッセージを追跡することをお勧めします。

于 2012-07-04T12:37:18.490 に答える