当TIBCO EMS服务器尝试故障转移时,客户端应该做什么?

时间:2008-10-24 18:35:54

标签: c# tibco tibco-ems ems

TIBCO EMS用户指南(第292页)说:

  

备份服务器将无限期地工作以A)成为   主服务器或B)重新连接到主服务器。它还说   当交换机成功时,客户端可能会收到故障转移通知(另请参阅TIBCO EMS .NET参考第220页)。

我对这些事实有些疑问......

  1. 服务器尝试故障转移/重新连接时,客户端出现了哪些错误?

  2. 客户的适当回应是什么?

    • 从ConnectionFactory获取新的Connection对象,直到有效吗?
    • 等待故障转移通知? (此时是否修复了当前的Connection实例?还是需要获取新实例?)
  3. 我希望情况很清楚,任何相关的信息或建议也会受到赞赏。

2 个答案:

答案 0 :(得分:4)

我至少可以回答上面的#1。

如果您启用了Tibems.SetExceptionOnFTSwitch(true);并设置了一个异常处理程序来捕获服务器发送给客户端的消息,您将看到以下内容:

对于单服务器,非容错连接故障: “连接已被终止”。

对于容错连接失败: “连接已执行容错切换到”

如果在连接断开时尝试发布,则会抛出TIBCO.EMS.IllegalStateException并显示“Producer is closed”消息。

对于上面的#2,我认为答案是允许EMS库尽可能地处理。一旦我们让EMS重新连接功能正常工作,它就会优雅地重新连接,直到服务器再次可用,一旦重新连接,就好像从来没有问题。唯一的问题可能是如果您尝试在ems连接恢复之前发布消息。这是异常处理程序的来源。一旦通知您处于故障转移模式,您可以调整发布方的异常处理以抑制错误,直到连接恢复。我不知道的是,当你耗尽所有重新连接尝试时,你怎么知道。

无论如何,似乎我们的两个世界在EMS方面密切相关 - 希望我们的发现(根据您对我的问题的评论)对您有帮助。

答案 1 :(得分:0)

我们使用TEMS(Tibco EMS - 用于WCF的Tibco产品)因此它成为自定义绑定。我们试图通过反弹服务器以强制切换来破坏它,并且它运行得非常好。确保您使用的是1.2版而不是1.1版,因为除了客户端确认之外,您无法执行任何操作。