美文网首页
一个关于IBM MQ的奇怪的Bug,debug了快一周

一个关于IBM MQ的奇怪的Bug,debug了快一周

作者: 成江 | 来源:发表于2021-01-08 10:07 被阅读0次

组里最近migrate MQ 到MQ hub,其中的一个模块(test order generator)出现了问题,消息无法发送到队列。但是其他的模块运行正常,我们可以给它们发送消息。

从log中发现,出现了NullPointerException, 简化的错误信息大概如下:
at java.util.Hashtable.put
at com.ibm.mq.jms.MQConnection.<MQConnection.java:466> ~[com.ibm.mqjms-com.ibm.mqjms.jar:6.0.0.0]
at com.ibm.mq.jms.MQQueueConnection...

由于之前的migration的改动涉及Spring的配置,bean的配置,我主要将debug精力放在了配置文件上,还花了很多时间去看了mq hub,ccdt,channel,hostname, port等。
我看来看去,配置和其他的模块一致,肉眼无法看出问题。我复制了其他模块的配置,将其中信息改成了test order 队列所需的信息,结果还是不行。

后来,又将发送消息的Java代码改动得和其他模块一模一样。但是同样的错误还是出现。

种种debug之后,基本确定队列是没有问题,ccdt配置文件也很没问题,bean的配置也没有问题。

种种尝试之后,还是无法找到根本原因。

最后,还是老同志罗伯特有经验,他发现了原因:该模块的mq driver的版本和其他模块的版本不一致。其实,从log中就可以发现端倪:com.ibm.mqjms-com.ibm.mqjms.jar:6.0.0.0。也是我经验不足,加上当时加入的团队的时间不长,没有注意到这个版本其实是错误的。将模块的引用的mq相关的版本改动到8,问题解决。

经验:

  1. 尽管有时候log信息不太清晰,或者不够直接。但是log的信息还是有用的(比如这次的6.0.0.0)。
  2. 引用的包的版本有时候也会导致bug,需要注意。

相关文章

网友评论

      本文标题:一个关于IBM MQ的奇怪的Bug,debug了快一周

      本文链接:https://www.haomeiwen.com/subject/yipxaktx.html