【发布时间】:2010-09-16 07:34:39
【问题描述】:
我们有一个 TIBCO EMS 解决方案,它在 2-4 个服务器环境中使用内置服务器故障转移。如果 TIBCO 管理员将故障转移服务从一台 EMS 服务器转移到另一台,则连接应该在 EMS 服务级别自动转移到新服务器。对于我们使用 EMS 服务的 C# 应用程序,这不会发生 - 我们的用户连接在故障转移后没有转移到新服务器,我们不确定原因。
我们的应用程序仅在启动时连接到 EMS,因此如果 TIBCO 管理员在用户启动我们的应用程序后进行故障转移,他们用户需要重新启动应用程序才能重新连接到新服务器(我们的 EMS 连接使用一个服务器字符串,包括所有 4生产 EMS 服务器 - 如果第一次尝试失败,它会移动到字符串中的下一个服务器并再次尝试)。
我正在寻找一种自动化方法,如果它检测到连接已断开,它将尝试定期重新连接到 EMS,但我不确定如何最好地做到这一点。
有什么想法吗?我们使用的是 TIBCO.EMS.dll 版本 4.4.2 和 .Net 2.x(SmartClient 应用程序)
任何帮助将不胜感激。
【问题讨论】:
-
您目前如何实现容错?在“factories.conf”文件中的服务器上?您的“url”属性是否包含第 134 页的“tib_ems_dotnet_ref.pdf”中指定的逗号分隔的 URL 列表?
-
是的,这就是问题所在。当 EMS 服务器发生故障转移时,连接应该从一台服务器转移到另一台服务器。当您的连接字符串中有一个 EMS 服务器的分隔列表时,这应该可以工作,但我相信 EMS.lib 中有一个错误使其无法工作
-
监听器故障转移后是否抛出错误?生产者故障转移后(发送消息时)是否抛出错误?最有可能的是,图书馆希望您重新连接。在连接字符串中提供多个服务器只是让它在连接期间循环 - 而不是稍后......
-
当我们不确定服务器在做什么时,我犹豫是否要深入研究客户端编程解决方案。您能否提供有关如何/何时知道故障转移不起作用的更多信息? (注意:客户端故障转移通知 - tib ems 用户指南 pg 292,tib dotnet ref pg 220)。
-
ConnectionAttempts 设置客户端重新尝试连接到服务器的次数。 ReconnectAttempts 设置客户端在网络断开后尝试重新连接的次数。他们似乎都没有按照他们所说的去做。是的,我们在 Publish 上遇到了例外情况。