我需要通过无线网络从移动的计算机发送连续的消息流(带有时间戳和 x/y 坐标的简单文本消息)。将会有很多这样的短信(例如每秒 200 条),不幸的是,网络连接很可能不可靠,因为发送设备会不时离开 WLAN 区域...当连接不可用时,所有即将发送的消息应进行缓冲,直到连接再次恢复。传输消息的顺序并不重要,因为它们包含时间戳,但必须传输所有消息。
发送这些电报的简单但可靠的方法是什么?是否可以只使用“普通”TCP 或 UDP 套接字连接?当连接暂时断开时,消息是否会被缓冲并在之后自动发送?或者是直接检测并报告连接丢失,因此我可以缓冲消息并尝试自行定期重新连接?像 Netty 这样的库在这里有帮助吗?
我还考虑过使用代理来代理通信(例如 ActiveMQ 代理网络)作为替代方案。这里的开销会不会太大了?!在这种情况下,您会建议使用另一种消息中间件吗?
最佳答案
TCP 保证传送(即在连接时) - 您应该检查连接是否已断开,并在重试连接时将消息放入队列中。一旦发现连接恢复,将队列转储到 TCP 套接字中。
还要查看 TCP Keepalive 以识别已关闭的连接:http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html
关于java - 在JAVA中通过不可靠的网络发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22518933/