我将activemq杀掉,客户端可以迅速连接到集群的其他中间件。
但如果把掉当前连接的中间件网线,客户端就一直等,10多分钟都不连接到其他中间件。杀进程和把网线有啥区别,对于soceket来说。
连接参数设置为:wireFormat.maxInactivityDuration=0

解决方案 »

  1.   

    杀进程,好歹操作系统会释放资源,那么文件、Socket等的资源会逐一释放,操作系统释放Socket自然会发送TCP的关闭连接信号,那么客户端会收到TCP断开的信息。拔网线操作系统就没法发送什么TCP关闭信号了因为网线已经断了。
    客户端完全不知道服务器端网线已经断了,除非客户端定期发送探测包,所以原则上只要客户端不发送探测包,可以一直这么等下去。