Spring integration 错误通道调用后,ip\u连接\u id将更改
我配置为处理错误和响应错误消息,即使错误发生。 所以,我在入站适配器中设置了错误通道 我用message捕获了失败消息的标题信息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
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