我有2台Tibco-Ems服务器正在运行,并且具有容错设置。
如果一台服务器不可用,则活动服务器将切换到
预期的故障转移服务器。

但是,我时不时会收到奇怪的错误。然后新
活动服务器说:
“重新连接失败:id = XY的连接未知”

仅当客户端打开连接时才会发生这种情况。
但这就是我的期望,连接也应该切换到
新的活动服务器。
就像我说的那样,有时会奏效,有时会奏效。

当我在客户端中注册EMS-Exceptions时,出现错误:
“无法从传输连接读取数据:远程主机强行关闭了现有连接。”

堆栈跟踪:
在System.Net.Sockets.NetworkStream.Read(Byte []缓冲区,Int32偏移量,Int32大小)
在TIBCO.EMS.LinkTcp._readEx(Byte []缓冲区,Int32偏移量,Int32大小)
在TIBCO.EMS.LinkTcp._ReadWireMsg()
在TIBCO.EMS.LinkTcp.LinkReader.Work()

现在,我不知道该怎么办。也许有人可以帮助我了解确切的问题是什么。
提前致谢

更新:
这里的最新更新:
即使出现错误“重新连接失败”,它也可以按预期工作。第二台服务器将接管。

最佳答案

这是怎么回事... EMS服务器跟踪其具有的活动客户端连接,并将有关这些连接的信息保存在meta.db存储文件中。容错故障转移后,当客户端重新连接时,新的主要EMS实例可以通过将客户端提供的信息与meta.db存储文件中存储的信息进行匹配来恢复客户端连接。

EMS有时会清理尚未重新连接的客户端连接。该时间由tibemsd.conf配置文件中的ft_reconnect_timeout参数控制。此配置参数的默认设置为60秒。根据EMS清理“过期”连接时的日志记录设置,您可能会看到一条消息,指示它已在EMS日志中“清除”了客户端连接。

有时,客户端最终在EMS服务器已经清除“过期”连接后最终会尝试重新连接。如果网络分区阻止客户端成功重新连接到EMS服务器,直到EMS服务器清除连接之前,就可能发生这种情况。发生这种情况时,您将看到“重新连接失败:连接未知...”消息。

当客户端由于此错误而无法“重新连接”时,它只是将连接尝试为“新”连接。这可以正常工作,并且可以继续进行处理。

09-25 20:26