用于NAT后面的客户端的Spring Integration UDP服务器

时间:2015-11-06 12:41:34

标签: java udp spring-integration nat

我尝试使用Spring Integration实现UDP服务器,如here所述,但当客户端在NAT后面运行时,他们永远不会收到来自服务器的响应。这是因为服务器应该从与UDP适配器端口相同的端口发送响应数据报(通过NAT解释here来检查UDP。)

如何使用Spring Integration与NAT后面的客户端实现正确的UDP通信?

1 个答案:

答案 0 :(得分:1)

正如那些话题所讨论的那样;目前没有UDP的网关,只有通道适配器。网关用于双向集成。

多年来,UDP网关几乎没有任何需求。

我们做了make some changes以方便用户回复收到的消息(通过添加发送端口作为标头)。

这将允许您构建DatagramPacket(可能使用SI DatagramPacketMessageMapper)并使用您自己的代码将其发送到原始系统。

如果您希望我们重新考虑提供UDP网关,请对JIRA Issue发表评论。更好的是,请考虑contributing

修改

对于异步发送,您不需要网关;买你需要调整内置在出站适配器中的映射器和消息处理程序。

更改DatagramPacketMessageMapper here以使用邮件标头设置socketAddress;并为UnicastSendingMessageHandler添加一个选项,以便它无法无条件地设置destinationAddress here

您可以通过继承处理程序并覆盖send()方法来完成此操作。

然后,您可以使用<service-activator/>属性将自定义消息处理程序连接到ref