TIBCO EMS 用户指南(第 292 页)说:
The backup server will work indefinitely to either A) become the primary server or B) reconnect to the primary server. It also says clients may receive fail-over notification when the switch is successful (see also TIBCO EMS .NET reference pg 220).
我有一些关于这些事实的问题......
当服务器尝试故障转移/重新连接时,客户端会发生什么样的错误?
客户的适当回应是什么?
- 从 ConnectionFactory 获取新的 Connection 对象直到一个有效?
- 等待故障转移通知? (此时当前的 Connection 实例是否已修复?还是我需要获取一个新实例?)
我希望场景清晰,任何相关信息或建议也将不胜感激。
最佳答案
我至少可以回答上面的#1。
如果你启用了 Tibems.SetExceptionOnFTSwitch(true);并设置了一个异常处理程序来捕获服务器发送给客户端的消息,您将看到以下内容:
对于单服务器、非容错连接失败: “连接已终止”。
对于容错连接失败: “连接已执行容错切换到”
如果您尝试在连接断开时发布,则会抛出 TIBCO.EMS.IllegalStateException 以及“Producer is closed”消息。
对于上面的#2,我认为答案是让 EMS 库尽可能多地处理。一旦我们让 EMS 重新连接功能开始工作,它就会优雅地尝试重新连接,直到服务器再次可用,一旦重新连接,就好像从来没有问题一样。唯一的陷阱可能是您尝试在 ems 连接恢复之前发布消息。这是异常处理程序的用武之地,一旦通知您处于故障转移模式,您可以在发布者端调整异常处理以抑制错误,直到连接恢复。我不知道的是,当您用尽所有重新连接尝试时,您如何判断。
无论如何,在 EMS 方面,我们的两个世界似乎密切相关 - 希望我们的发现(基于您对我的问题的评论)对您有所帮助。
关于c# - 当 TIBCO EMS 服务器尝试故障转移时,客户端应该做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/234782/