蒂科.特快专递.非法状态异常:连接失败:服务器处于待机模式



我们有一个大系统,有很多服务通过TIBCO EMS消息传递相互通信。现在,其中一个服务在尝试连接到 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()

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

知道什么会导致此异常吗?

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

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

它通常如下所示:

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

请参阅TIBCO文档中的源文档。

事实证明,我们用来检查服务器是否处于活动状态的工具(我们在服务器上没有管理员权限(行为异常(显示不正确的状态(,因此这些服务器都没有真正处于活动状态(不是主服务器也不是辅助服务器(。一旦服务器被调出,此错误消息就消失了。

最新更新