Spring integration 错误通道调用后,ip\u连接\u id将更改

Spring integration 错误通道调用后,ip\u连接\u id将更改,spring-integration,Spring Integration,我配置为处理错误和响应错误消息,即使错误发生。 所以,我在入站适配器中设置了错误通道 我用message捕获了失败消息的标题信息 MessageTransformationException exBody = (MessageTransformationException) message.getPayload(); message = exBody.getFailedMessage(); 但问题是ip连接id更改如下 ip连接id=127.0.0.1:51049:dd62fe

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

我用message捕获了失败消息的标题信息

    MessageTransformationException exBody = (MessageTransformationException) message.getPayload();
    message = exBody.getFailedMessage();
但问题是ip连接id更改如下

ip连接id=127.0.0.1:51049:dd62fed7-00d2-4a7e-8f99-908b4766b862

ip连接id=127.0.0.1:51051:d09d5273-a0e9-4ab9-ac73-f1963febf997

请让我知道如何使ip\u连接\u id不可变。
我必须对呼叫者进行同步响应。谢谢。

肯定还有别的事情发生了;ip_connection_id是不可变的,因为它将始终反映接收消息的连接的id,该id在连接的构造函数中设置,从未更改。如果您有具有不同连接id的消息,则该消息来自不同的连接

我刚刚修改了这里的示例,将连接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