pymqi命令全部被阻止

时间:2018-08-21 09:07:46

标签: python ibm-mq

我具有以下环境:

  • Redhat
  • Python 2.7

我有一个模块,该模块从IBM MQ读取消息,然后对其进行处理。 方案如下:

  
      
  1. 启动应用程序
  2.   
  3. 通过发出ifdown eth0命令,与IBM MQ所在的VM的模拟连接丢失
  4.   
  5. 按预期的方式断开连接
  6.   
     

预期行为:

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

          .....

有什么想法吗?

0 个答案:

没有答案