一、实验前言
场景三:测试高可用,使用连接工厂(多地址连接方式),不通过虚地址实现单节点故障后自动连接备用节点(QMRGRECGC->QMFX)
目的:1.实现主节点故障后能够自动重连到备用节点实现消息不丢失,服务高可用
该架构图与实验二的架构图在两个网关前减少了HA的高可用软件。
具体不一样的是场景三不使用Keepalived作为高可用服务,而采用IBM MQ提供的连接工厂方式,实现程序的主备切换。
二、实验步骤
2.1队列管理器配置
各个队列管理的配置跟实验场景二一样,这里不再重复。
2.2启动回执发送程序
2.3模拟主网关故障
在程序运行过程中停止主网关的客户端连接通道MY.SVRCONN
停止之后,程序应该会抛出异常,并发起重连
已发送:15
已发送:16
已发送:17
已发送:18
====有异常=====
com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2007: 将消息发送至目标 'TO.HUIZHI' 失败。
JMS 尝试执行 MQPUT 或 MQPUT1;然而 WebSphere MQ 报告了错误。
使用链接的异常来确定此错误的原因。
at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:578)
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:214)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.checkJmqiCallSuccess(WMQMessageProducer.java:1157)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.checkJmqiCallSuccess(WMQMessageProducer.java:1114)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.access$800(WMQMessageProducer.java:72)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer$SpiIdentifiedProducerShadow.sendInternal(WMQMessageProducer.java:843)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer$ProducerShadow.send(WMQMessageProducer.java:521)
at com.ibm.msg.client.wmq.internal.WMQMessageProducer.send(WMQMessageProducer.java:1283)
at com.ibm.msg.client.jms.internal.JmsMessageProducerImpl.sendMessage(JmsMessageProducerImpl.java:838)
at com.ibm.msg.client.jms.internal.JmsMessageProducerImpl.synchronousSendInternal(JmsMessageProducerImpl.java:1967)
at com.ibm.msg.client.jms.internal.JmsMessageProducerImpl.sendInternal(JmsMessageProducerImpl.java:1913)
at com.ibm.msg.client.jms.internal.JmsMessageProducerImpl.send(JmsMessageProducerImpl.java:1469)
at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProducer.java:293)
at com.datatech.jmstest.Test_CF.sendMsg2(Test_CF.java:202)
at com.datatech.jmstest.Test_CF.main(Test_CF.java:171)
Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ 调用失败,完成代码为 '2' ( 'MQCC_FAILED' ),原因为 '2009' ( 'MQRC_CONNECTION_BROKEN' )。
at com.ibm.msg.clie