0

我有以下环境:

  • 红色的帽子
  • 蟒蛇 2.7

我有一个从 IBM MQ 读取消息然后处理它们的模块。场景如下:

  1. 启动应用程序
  2. 通过发出 ifdown eth0 命令模拟与 IBM MQ 所在的 VM 的连接丢失
  3. 正如预期的那样,连接丢失了

预期行为:

  • 引发 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:

          .....

有任何想法吗?

4

0 回答 0