0

即使发生错误,我也配置为处理错误和响应错误消息。所以,我在入站适配器中设置了错误通道。

我使用 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 在连接的构造函数中设置并且永远不会更改。如果您的消息具有不同的连接 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 回答