现象

使用dis chs(*)查看通道状态的时候,看到同一个通道上出现了多条通道状态,如

$ runmqsc QMUMBFEA

5724-H72 (C) Copyright IBM Corp. 1994, 2009.  ALL RIGHTS RESERVED.

Starting MQSC for queue manager QMUMBFEA.



dis chs(*)

    1 : dis chs(*)  

AMQ8417: Display Channel Status details.

  CHANNEL(402T581)                        CHLTYPE(RCVR)

  CONNAME(10.8.6.232)                     CURRENT

  RQMNAME(QMU5810A)                       STATUS(RUNNING)

  SUBSTATE(RECEIVE)                    

AMQ8417: Display Channel Status details.

  CHANNEL(581T402)                        CHLTYPE(SDR)

  CONNAME(10.8.6.232(1428))               CURRENT

  RQMNAME(QMU5810A)                       STATUS(RUNNING)

  SUBSTATE(MQGET)                         XMITQ(XM5810A)

AMQ8417: Display Channel Status details.

  CHANNEL(402T581)                        CHLTYPE(RCVR)

  CONNAME(10.8.6.10)                      CURRENT

  RQMNAME(QMU5810A)                       STATUS(RUNNING)

  SUBSTATE(RECEIVE)

这里很明显可以看出对于通道402T581来说有两个通道状态,而且是分别指向不同ip的。

同时伴随着对于通道402T581,经常会是不是的会由于序号不同步处于RETRYING状态

解决

出现这种情况是因为我在10.8.6.232和10.8.6.10上分别搭建了两套同一系统的MQ分别用于开发和测试环境。然而在10.8.6.10上创建发送通道402T581时,忘了修改远程的ip,导致两套环境的MQ发送通道同时连接上同一个MQ的同一个接受通道。修改10.8.6.10上发送通道的远程队列ip后,问题就解决了。