在多实例MQ中切换故障转移和自动重新连接

时间:2014-11-15 11:47:27

标签: java ibm-mq

我对多实例MQ中的切换,故障转移和自动重新连接几乎没有疑问。在此通过IBM Documentation时。

方案

  1. 切换:使用endmqm -s <QMGR>
  2. 故障转移:关闭正在运行活动实例的服务器。
  3. 应用程序:我正在运行一个独立的Java程序,它将消息放入队列中。
  4. 问题:

    1. MQ处理切换和故障转移的方式有什么不同吗?从我可以看到的文件中,在两种情况下锁都被释放。

    2. 如果活动实例因切换或故障转移而关闭,是否会自动重新连接?我在通过我的独立应用程序放置消息时观察到,当我在活动实例中启动命令endmqm -s <QMGR>时,我的应用程序崩溃了

    3.   

      com.ibm.msg.client.jms.DetailedJMSException:JMSWMQ2007:失败了   发送消息到目的地'MYQ'。 JMS尝试执行MQPUT   或MQPUT1;但是WebSphere MQ报告了一个错误。使用链接   确定此错误原因的异常。

      但是,如果我重新启动我的应用程序,它将连接到备用服务器(在endmqm -s之后激活)并成功发送消息。有没有办法执行自动重新连接?如果是,是否可以从MQ获得任何配置,或者需要从应用程序级别完成。

      1. 我在文件中看到提到
      2. Automatic client reconnect is not supported by WebSphere® MQ classes for Java.

        这意味着什么?

        1. 到目前为止,我使用普通的Java代码来测试多实例功能。我想对Spring DMLC尝试相同的操作。 Spring DMLC是否支持多实例行为?如果是,是否需要额外的配置/设置?
        2. 非常感谢任何指导。

1 个答案:

答案 0 :(得分:1)

  1. 从应用程序的角度来看,两者都是相同的。前者是强制/手动,而后者是由硬件/软件主机触发。

  2. 您可以在应用程序级别设置自动重新连接 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

  3. 在纯Java中,您必须在接收连接中断异常时重新创建MQQueueManager对象。它听起来并非如此微不足道,但您可以查看应用程序的确切状态,尤其是机上交易。

  4. Spring有JMS支持。不确定你的意思是JMS还是MQ Java。如果是MQ Java,那么我恐怕不可能。您可以使用的只是依赖注入。

  5. http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.dev.doc/q119450_.htm?lang=en 使用适当的connectionnamelist设置connectionfactory,或者在独立的情况下通过绑定文件(由JMSAdmin生成)加载它。