在错误通道调用之后,ip_connection_id被更改

时间:2012-07-04 07:51:01

标签: spring-integration

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

我使用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不可变。 我必须同步响应来电者。感谢。

1 个答案:

答案 0 :(得分: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日志记录运行并通过您的流程跟踪消息。