我已经看到这种行为偶尔发生,我无法一致地重现它。但似乎Tyrus(v1.10)中的重新连接逻辑可能导致同一客户端有多个打开的套接字/线程。
导致多个套接字连接的过程如下所示:
我的重新连接处理程序如下所示:
@Override
public boolean onDisconnect(CloseReason reason)
{
LOG.info("Reconnect handler captured close event. Reason: " + reason);
if(!reconnect)
{
LOG.info("Not attempting to reconnect. Closing the latch");
return false;
}
else
{
LOG.info("Attempting to reconnect.");
return true; // reconnect
}
}
我可以尝试在服务器端解决这个问题,并验证每个连接对于客户端是唯一的,但是我必须同步到一个线程以获得新连接,这甚至不是解决负载均衡服务器的问题。