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

时间:2010-03-29 08:56:41

标签: 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!')

但我收到错误:

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

QM_APPLE队列管理器有Q1本地队列。

我的代码出了什么问题?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:2)

你的帖子提到你喜欢用Python或Java运行。 Python我无法帮助但前一个响应者做了,太酷了。至于Java,也许我可以指出你正确的方向。 IBM支持Java和JMS,并为每个提供了许多示例程序。默认情况下,这些安装在:

C:\ Program Files \ IBM \ WebSphere MQ \ tools \ wmqjava

C:\ Program Files \ IBM \ WebSphere MQ \ tools \ jms

我也在这里提供我自己的示例代码: http://www.ibm.com/developerworks/websphere/techjournal/0610_woolf/0610_woolf.html

IBM的Java和JMS WMQ API实现的文档在这里: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/uj10120_.htm

我在Python模块上找到的文档似乎表明它必须链接到客户端或服务器WMQ库,并且您的错误似乎表明您已链接客户端绑定。如果是这种情况,您必须提供上一个发布指出的连接信息。 Java和JMS代码支持连接类型,因此无法完成链接,但您仍必须提供正确的连接详细信息。特别是,请阅读连接差异一章: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/ja11010_.htm

- T.Rob