我是mqseries的新手,我从IBM WebSphere MQ curses开始。有MQ_APPLE
和MQ_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
个本地队列。
我的代码怎么了?
基于该错误,似乎您正在尝试连接到远程队列管理器,但是您正在使用本地队列管理器绑定方法进行连接。我之所以这样说,是因为错误说明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)
您的帖子中提到您希望此代码以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