因工作需要连接IBMMQ进行数据传输,翻越了许多资料写该类!pymqi不好安装,故使用的现成docker包运行的程序!特别注意,调测中涉及mq的编码,后改了pymqi中的原始编码解决的,其中有一处的编码被写死了(记不到具体位置了,需要看源码哦),如何在此修改bytes_encoding的编码也不会正确。
import pymqi
from recordlog import recordlog
rdlog = recordlog()
s_log, f_log = rdlog.return_logers()
class IBMMQ:
def __init__(self, queue_manager, channel, host, port, queue_name):
self.queue_manager = queue_manager
self.channel = channel
self.queue_name = queue_name
self.conn_info = "%s(%s)" % (host, port)
self.putq = ""
self.qmgr = ""
def put_mq(self, xmlfile):
try:
f_log.info("开始向 MQ 存入数据!")
self.putq.put(xmlfile)
f_log.info("MQ 存入数据成功!")
return True
except Exception as e:
f_log.error("MQ存入数据报错,报错信息为:" + str(e))
return False
def close_mq(self):
try:
f_log.info("关闭 MQ 通道!")
self.putq.close()
f_log.info("关闭 MQ 连接!")
self.qmgr.disconnect()
except Exception as e:
f_log.info("关闭 MQ 报错,报错为:" + str(e))
def connect_mq(self):
try:
f_log.info("MQ连接信息:" + self.queue_manager + " " + self.channel + " " + self.conn_info)
f_log.info("开始进行MQ连接!")
self.qmgr = pymqi.connect(self.queue_manager, self.channel, self.conn_info, bytes_encoding='utf-8')
f_log.info("开始获取通道:" + self.queue_name)
self.putq = pymqi.Queue(self.qmgr, self.queue_name)
return True
except Exception as e:
f_log.info("MQ连接失败,报错信息为:" + str(e))
return False