TIBCO.EMS.IllegalStateException:连接失败:服务器处于待机模式

时间:2017-11-20 10:31:18

标签: c# tibco-ems

我们有一个庞大的系统,通过TIBCO EMS Messaging相互通信。 现在,其中一个服务在尝试连接到EMS服务器时不断抛出此异常:

TIBCO.EMS.IllegalStateException: connect failed: server in standby mode

但是,同一EMS服务器上的其他服务工作正常,没有任何异常。

我尝试通过创建一个控制台应用程序来重现这一点,该应用程序将使用相同的凭据连接到同一目标(队列)上的EMS服务器,但无法重现此错误。

EMS连接是容错的,可能已经故障转移到辅助服务器,但是,现在我看到主服务器已备份。

我还尝试仅连接到主服务器(我可以看到它正在运行),但它失败并出现相同的异常。

以下是堆栈跟踪供参考:

TIBCO.EMS.IllegalStateException: connect failed: server in standby mode
   at TIBCO.EMS.CFImpl._CreateConnection(String userName, String password, Boolean xa)
   at TIBCO.EMS.ConnectionFactory.CreateConnection(String userName, String password)
   at Ems.makeConn()

我们在TIBCO.EMS.dll v. 8.1.0.10上使用.NET 4.0

知道什么可能导致此异常?

2 个答案:

答案 0 :(得分:1)

您的连接字符串是否只能提及FT / HA设置中的一个主机?这看起来就像您尝试仅连接到HA / FT主机之一时返回的错误消息,而不是当前活动的主机。

如果是这种情况,连接字符串将大多数的时间,但正确的 EMS HA连接字符串包括两个(或更多!)EMS主机和港口。只有一个同时处于活动状态。

通常看起来像这样:

serverUrl=tcp://server0:7222, tcp://server1:7344

请参阅此处的来源文档in TIBCO docs

答案 1 :(得分:0)

结果发现我们用来检查服务器是否处于活动状态(我们没有服务器上的管理员权限)的工具行为不当(显示不正确的状态),因此这些服务器都没有真正活动(不是主要的也不是二次)。 服务器启动后,此错误消息就消失了。