首页 > 解决方案 > 分布式设置的 Tibco EMS 服务器容错不适用于 java 应用程序

问题描述

我在单独的 vm(host1 和 host2)上使用 2 个实例进行了容错设置。如果我停止主实例,辅助实例将成功激活,但当前连接因错误而关闭

重新连接失败:id=5 的连接未知

2018-08-09 14:18:32.907 Connection to active server 'tcp://***:7222' has been lost.
2018-08-09 14:18:32.907 Server activating on failure of 'tcp://****:7222'.
2018-08-09 14:18:32.907 Server rereading configuration.
2018-08-09 14:18:32.938 Recovering state, please wait.
2018-08-09 14:18:32.938 Recovered 1 pending connection.
2018-08-09 14:18:32.938 Server is now active.
2018-08-09 14:18:40.032 [**@***]: reconnect failed: connection unknown for id=156
2018-08-09 14:20:35.485 Purged 1 connection.

当我在同一台机器上进行相同的设置时,使用端口 9222/9224 运行的 2 个 Tibco 实例它正在工作,并且当主服务器出现故障时,应用程序能够使用来自辅助服务器的消息而没有任何问题。

此外,Java 应用程序能够在启动时连接两台服务器,连接两台服务器没有问题。

我尝试增加 ft_reconnect_timeout 然后我在 Tibco 服务器上没有收到任何错误,但应用程序没有选择消息。

我已根据TIBCO EMS 在容错模式下更新了 tibemsd.conf、factories.conf

设置时我错过了什么吗?我们是否必须像对数据库一样在后台对 Tibco 文件进行同步?

标签: javafault-tolerancetibco-ems

解决方案


根据Tibco EMS 8.4 用户指南,这是非共享状态容错:
在此 FT 中,主节点和辅助节点不会共享数据,服务器不会将 FT 视为未共享的数据,因此会出现未知连接错误。

客户必须处理它。对于需要使用 com.tibco.tibems.ufo 包(tibjmsufo.jar)的 java 客户端来支持 Unshared State FT。另外,需要提及 serverUrl=tcp://server0:7222+tcp://server1:7344 (用+号分隔)


推荐阅读