#Solace - 为安慰Java JMS发布者实现DR

时间:2018-02-21 13:56:56

标签: solace

我有一个现有的应用程序在solace jar v7.1.2上以pub / sub模式执行。现在我们已升级到v10.1.1,并且作为实施DR设置(灾难恢复)的一部分,我在配置中添加了另外一个以逗号分隔的主机。 应用程序可以成功连接到主要主机,但在切换期间(即从主要到DR)应用程序无法连接,我收到了以下错误。如果我重新启动应用程序,它将连接到DR主机。

com.solacesystems.jcsmp.JCSMPErrorResponseException: 400: Unknown Flow Name [Subcode:55]
        at com.solacesystems.jcsmp.impl.flow.PubFlowManager.doPubAssuredCtrl(PubFlowManager.java:266)
        at com.solacesystems.jcsmp.impl.flow.PubFlowManager.notifyReconnected(PubFlowManager.java:452)
        at com.solacesystems.jcsmp.protocol.impl.TcpClientChannel$ClientChannelReconnect.call(TcpClientChannel.java:2097)
        ... 5 more
|EAI-000376|||ERROR|    |EAI-000376 JMS Exception occurred, Description: `Error sending message - unknown flow name ((JCSMPTransportException)

需要帮助才能了解我们是否需要进行一些配置才能重新连接到DR主机以便顺利切换。

1 个答案:

答案 0 :(得分:0)

正如Alexandra指出的那样,从7.1.2版开始,使用保证消息传递时,即使在发生故障转移的情况下,Solace JMS API仍可以保证传递。收到“ Error Response (400) - Unknown Flow Name”这样的INFO级日志消息是正常现象,这并不表示有问题,但是(带有堆栈跟踪的)异常问题,表示交付不是保证。

背景:如果客户端和代理(在Solace服务器上)之间的连接意外终止,则代理将保持流状态-但仅保持三分钟。还将状态复制到HA mate代理以支持故障转移(但不复制到复制mate)。如果客户端在三分钟内重新连接,则可以从中断的位置继续。如果三分钟后重新连接,服务器将响应以下内容(将回显到日志中):

2019-01-04 10:00:59,999 INFO  [com.solacesystems.jcsmp.impl.flow.PubFlowManager] (Context_2_Thread_reconnect_service) Error Response (400) - Unknown Flow Name
2019-01-04 10:00:59,999 INFO  [com.solacesystems.jcsmp.impl.PubADManager] (Context_2_Thread_reconnect_service) Unknown Publisher Flow (flowId=36) recovered: 1 messages renumbered and resent (lastMessageIdSent =0)

没关系:客户端JMS库将自动重新发送任何必要的消息,因此仍然可以保证有保证的消息传递。

还要确认一下,jar名称表示版本,因此sol-jms-10.1.1.jar使用版本10.1.1。