关于IBM MQ6.0与MQ8.0的通信问题

国庆之后,负责的一个项目突然出现了问题,描述问题:
关于IBM MQ6.0与MQ8.0的通信问题_第1张图片

   在网络,业务,业务量都没有增长的情况下,MQ8的批量发送通道突然就挂掉了,变成retrying状态了,消息全都堵在传输队列里了,死信队列无消息。实时通道正常,排除网络原因导致的通道问题。

   采取的措施有简单的重置通道,通道状态没变化,然后进行

```
STOP CHANNEL(MQ8.MQ6.B1) MODE(FORCE);
RESET CHANNEL(MQ8.MQ6.B1) ACTION(COMMIT);
START CHANNEL(MQ8.MQ6.B1);
```

   通道状态还是没变化,一直是retry ing,查看日志,发现MQ8发送端的日志一直报错AMQ9504(MQ8.MQ6.B1通道检测到协议错误)和AMQ9999,接收端MQ6.0一直报错AMQ9206(将数据发送到MQ6.0发生错误通信故障,TCP/IP (write)调用的返回码104 X(‘68’)),由于是生产系统,通道堵住业务就做不了,于是采取的临时措施就是清空MQ8.0发送通道关联的传输队列里的消息,清空后,通道状态就正常了。到晚上业务量大的时候又堵住了,然后白天再清,一直这样循环。传输队列里堵住的消息取出来看过,都是业务正常的报文消息。
    
   到这里,无计可施了。在ibm开case求帮助,分析说可能是接受端的问题,可能是MQ6的bug,要打补丁,于是乎打补丁,把MQ6.0.2.1升级到MQ6.0.2.12,升级完了,这下好了MQ6.0的批量发送通道起不来了,MQ8.0的正常,但是两边报错竟然一样的。于是升级也没有解决这个问题。。。心态崩了。。。这个问题搞了半个月了。
   
   然后想是不是6.0的版本太低了,准备把6升到7试试。昨天下午,ibm工程师查到了有跟我们一样的case,建议我们把批量发送通道的COMPMSG(ZLIBHIGH)改成COMPMSG(NONE),接收端和发送端都要改。然后重启通道就可以了,今天没出问题!!!
   
   可能是由于6的版本太低了,跟8通信的时候,这个压缩的参数把消息给压缩了,然后到6那边可能接受这个压缩的消息有问题,导致他的接收端拒绝接收消息,断开连接,进而导致通信故障。

    太他妈的开心了。大半个月,煎熬。

你可能感兴趣的:(关于IBM MQ6.0与MQ8.0的通信问题)