【问题标题】:What should the client do while the TIBCO EMS server attempts failover?当 TIBCO EMS 服务器尝试故障转移时,客户端应该做什么?
【发布时间】:2010-09-19 02:03:16
【问题描述】:

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

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

我有一些问题来自这些事实......

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

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

    • 从 ConnectionFactory 获取新的 Connection 对象,直到其中一个工作正常?
    • 等待故障转移通知? (目前的 Connection 实例是否已修复?还是我需要获取一个新实例?)

我希望场景清楚,任何相关信息或建议也将不胜感激。

【问题讨论】:

  • 我启用了异常处理,并在单服务器环境中从处理程序的 args.Exception 属性中得到以下信息:“连接已终止”。浏览了所有其他属性,但没有其他值得注意的信息。不完全是故障转移,但是...
  • 哇,能够从 ExceptionHandler 得到这个错误:args.Exception:连接已执行容错切换到

标签: c# tibco tibco-ems ems


【解决方案1】:

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

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

对于单服务器、非容错连接失败: “连接已终止”。

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

如果您在连接断开时尝试发布,则会引发 TIBCO.EMS.IllegalStateException 并显示“生产者已关闭”消息。

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

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

【讨论】:

    【解决方案2】:

    我们使用 TEMS(Tibco EMS - 用于 WCF 的 Tibco 产品),因此它成为自定义绑定。我们试图通过反弹服务器以强制切换来打破它,并且效果非常好。确保您使用的是 1.2 版而不是 1.1 版,因为除了客户确认之外您不能做任何其他事情。

    【讨论】:

      猜你喜欢
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 2010-09-16
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 2014-06-10
      相关资源
      最近更新 更多