Java 检测两个对等点之间的网络连接是否中断

Java 检测两个对等点之间的网络连接是否中断,java,netty,Java,Netty,我正在制作一个高可用性集群(Active-Active),其中每个节点都以线拓扑(点对点连接)连接 像这样: 每个节点(在每个节点上运行的Java应用程序)都使用Netty通道进行连接。我的问题是,一个节点如何知道何时与它的对等节点(右或左)发生连接中断?这样我就可以在节点之间重新建立网络连接 为此,我可以在处理程序中使用channelInactive(ctx)方法吗?或者还有其他解决办法吗 连接中断的原因可能是:一个节点上的应用程序被强制停止、发生异常、I/O操作失败等。您可以使用chann

我正在制作一个高可用性集群(Active-Active),其中每个节点都以线拓扑(点对点连接)连接

像这样:

每个节点(在每个节点上运行的Java应用程序)都使用Netty通道进行连接。我的问题是,一个节点如何知道何时与它的对等节点(右或左)发生连接中断?这样我就可以在节点之间重新建立网络连接

为此,我可以在处理程序中使用
channelInactive(ctx)
方法吗?或者还有其他解决办法吗


连接中断的原因可能是:一个节点上的应用程序被强制停止、发生异常、I/O操作失败等。

您可以使用
channelActive
。。。。也就是说,如果你想检测到一个确实消失了的远程对等点,你需要在你的协议中实现某种“心跳”,以便及时发现它。

Netty仍然在使用TCP和UDP,所以你的问题是如何知道TCP/UDP链接是否关闭。TCP和UDP是应用层协议,因此不会及时提供(您的HA环境),因为TCP超时非常高。因此,唯一的方法是使用UDP实现心跳消息。TCP也会被操作系统自动重新传输,因此不适合心跳。