如何使用Python连接到本地MQseries队列?

Mic*_*las 5 python ibm-mq

我是mqseries的新手,我从IBM WebSphere MQ curses开始.有MQ_APPLEMQ_ORANGE队列管理器的例子.使用MQ Explorer将消息发送到本地或远程队列没有问题,但我想从代码中发送此类消息:Python或Java.我试过Python pymqi库,代码如下:

import pymqi

qmgr = pymqi.QueueManager(None)
qmgr.connect('QM_APPLE')

putq = pymqi.Queue(qmgr, 'Q1')
putq.put('Hello from Python!')
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

Traceback (most recent call last):
    File "mq_put.py", line 4, in <module>
        qmgr.connect('QM_APPLE')
    File "c:\Python26\lib\site-packages\pymqi.py", line 758, in connect
        raise MQMIError(rv[1], rv[2])
pymqi.MQMIError: MQI Error. Comp: 2, Reason 2540: FAILED: MQRC_UNKNOWN_CHANNEL_NAME
Run Code Online (Sandbox Code Playgroud)

QM_APPLE队列管理器和Q1本地队列.

我的代码出了什么问题?

gre*_*ker 3

根据该错误,您似乎正在尝试连接到远程队列管理器,但正在使用本地队列管理器绑定方法进行连接。我这样说是因为错误表明 mqi 客户端不知道要连接到哪个通道。您能否澄清一下您使用的是本地队列管理器还是远程队列管理器?我已粘贴下面的代码以使用通道连接到远程队列管理器。

import pymqi

queue_manager = "QUEUE_MANAGER_NAME"
channel = "SVRCONN.1"
host = "host.domain.com"
port = "1434"
conn_info = "%s(%s)" % (host, port)

qmgr = pymqi.QueueManager(None)
qmgr.connectTCPClient(queue_manager, pymqi.cd(), channel, conn_info)
Run Code Online (Sandbox Code Playgroud)