我对多实例MQ中的切换,故障转移和自动重新连接几乎没有疑问。在此通过IBM Documentation时。
方案
endmqm -s <QMGR>
问题:
MQ处理切换和故障转移的方式有什么不同吗?从我可以看到的文件中,在两种情况下锁都被释放。
如果活动实例因切换或故障转移而关闭,是否会自动重新连接?我在通过我的独立应用程序放置消息时观察到,当我在活动实例中启动命令endmqm -s <QMGR>
时,我的应用程序崩溃了
com.ibm.msg.client.jms.DetailedJMSException:JMSWMQ2007:失败了 发送消息到目的地'MYQ'。 JMS尝试执行MQPUT 或MQPUT1;但是WebSphere MQ报告了一个错误。使用链接 确定此错误原因的异常。
但是,如果我重新启动我的应用程序,它将连接到备用服务器(在endmqm -s之后激活)并成功发送消息。有没有办法执行自动重新连接?如果是,是否可以从MQ获得任何配置,或者需要从应用程序级别完成。
Automatic client reconnect is not supported by WebSphere® MQ classes for Java.
这意味着什么?
Spring DMLC
尝试相同的操作。 Spring DMLC是否支持多实例行为?如果是,是否需要额外的配置/设置?非常感谢任何指导。
答案 0 :(得分:1)
从应用程序的角度来看,两者都是相同的。前者是强制/手动,而后者是由硬件/软件主机触发。
您可以在应用程序级别设置自动重新连接 MQ中有两种类型的Java应用程序。一个是纯Java,使用MQ本机java类(如MQQueueManager,MQQueue)。另一个使用JMS API(如ConnectionFactory,Connection,Session,Producer)。从错误中,看起来您正在使用JMS。 MQ JMS支持自动重新连接 http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.con.doc/q017800_.htm?lang=en 有几种方法可以使用它。标准方法是通过JMS绑定引用启用它(参见上面的页面)。 http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.ref.dev.doc/q111800_.htm?lang=en 特别注意CONNECTIONNAMELIST,CLIENTRECONNECTOPTIONS,CLIENTRECONNECTTIMEOUT
在纯Java中,您必须在接收连接中断异常时重新创建MQQueueManager对象。它听起来并非如此微不足道,但您可以查看应用程序的确切状态,尤其是机上交易。
Spring有JMS支持。不确定你的意思是JMS还是MQ Java。如果是MQ Java,那么我恐怕不可能。您可以使用的只是依赖注入。
http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.dev.doc/q119450_.htm?lang=en 使用适当的connectionnamelist设置connectionfactory,或者在独立的情况下通过绑定文件(由JMSAdmin生成)加载它。