使用 TcpOutboundGateway 连接到旧服务器的相关消息的正确方法是什么

What is the correct way to make use of correlated messages for TcpOutboundGateway connection to a legacy server

我的理解是 TcpOutboundGateway 将 tcp 请求和响应相关联,但我不确定如何使用它。

下面的代码片段通过 TcpOutboundGateway 发送消息以与遗留系统通信。

message = new GenericMessage("ccs?cmd=5&itm="+(16600+t)+"&rf=2");
Test.sendChannel.send(message); // sendChannel is a DirectChannel. 
//Blocks here until reply comes in (in single use and cached)

我有一个端点来处理响应:

@ServiceActivator(inputChannel = "replyChannel")
public void handleReply(byte[] rawRes) {
    // handle the reply.
}

handleReply(...) 需要在代码的发送点处提供上下文,反之亦然。使用 Threadlocal 将上下文传递给处理程序是可行的(在这种情况下),但似乎不是一个好主意。

我看过示例,但它们似乎与我的代码完全不同(我想是因为我使用的是 Spring 启动)所以提前致歉 - 我确信我忽略了显而易见的,但会感谢您的帮助。

您可以在 MessageHeaders 内为 requestMessage 携带上下文,并且 replyMessage 将根据请求提供 headers。

对于 replyChannel 上的 POJO 处理程序,您可以使用 @Header("myContext") 添加一个方法参数。