6

我是 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

我的代码有什么问题?

4

2 回答 2

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)
于 2010-03-29T13:37:26.820 回答
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_w ​​oolf/0610_w​​oolf.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.罗布

于 2010-03-30T21:29:10.163 回答