我有以下环境:
- 红色的帽子
- 蟒蛇 2.7
我有一个从 IBM MQ 读取消息然后处理它们的模块。场景如下:
- 启动应用程序
- 通过发出 ifdown eth0 命令模拟与 IBM MQ 所在的 VM 的连接丢失
- 正如预期的那样,连接丢失了
预期行为:
- 引发 pymqi.MQMIError
观察到的行为:
- 所有 pymqi 调用都被阻止了。除非使用 ifup 再次启用连接,否则正在运行的线程什么也不做。
这是代码的一部分:
def connect_and_subscribe(self):
"""Connect to IBM MQ and subscribe"""
self.qmgr = pymqi.connect(self.qmgr_name, self.qmgr_channel, self.qmgr_connect)
self.queue = pymqi.Queue(self.qmgr, self.queue_name)
self.queue_i = pymqi.Queue(self.qmgr, self.queue_name)
self.queue_i_type = self.queue_i.inquire(pymqi.CMQC.MQIA_Q_TYPE)
self.connected = True
logging.info('CONNECTED TO MQ USING PYMQI VERSION <%s>' % (pymqi.__version__))
return
#--------------------------------------------------------------------
m = None
# Message Options
gmo = pymqi.GMO()
gmo.Options = pymqi.CMQC.MQGMO_WAIT | pymqi.CMQC.MQGMO_FAIL_IF_QUIESCING | pymqi.CMQC.MQPMO_SYNCPOINT
gmo.WaitInterval = self.max_cycle_wait_secs * 1000
while True:
try:
m = None
md = pymqi.MD()
m = self.queue.get(None, md, gmo)
self.queue.commit()
except pymqi.MQMIError as e:
if e.reason == pymqi.CMQC.MQRC_NO_MSG_AVAILABLE:
.....
有任何想法吗?