使用 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")
添加一个方法参数。
我的理解是 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")
添加一个方法参数。