我是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
本地队列。
我的代码出了什么问题?
答案 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