2010-03-29 117 views
5

我是mqseries的新手,我從IBM WebSphere MQ詛咒開始。隊列管理器有MQ_APPLEMQ_ORANGE的示例。使用MQ Explorer將消息發送到本地或遠程隊列沒有問題,但我想從代碼發送這樣的消息:Python或Java。我想這樣的代碼的Python pymqi庫:如何使用Python連接到本地MQSeries隊列?

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_APPLEQ1本地隊列隊列管理器。

我的代碼有什麼問題?

回答

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) 
+0

我想用本地隊列。 AFAIK沒有頻道。頻道出現在關於在客戶端 - 服務器配置中發送消息的課程中(我也遇到了本課程的問題)。我完成了關於使用本地和遠程隊列發送消息的課程,並希望從代碼中完成。 – 2010-03-31 07:58:52

+0

正如T.Rob所說,看起來你正在使用一個建立在客戶端模式下的pymqi模塊。如果你想使用綁定連接(本地隊列管理器,沒有通道),你需要使用一個建立在服務器模式下的pymqi模塊。 查看此鏈接:http://packages.python.org/pymqi/index.html#download-build-install 否則,您可以隨時在本地隊列管理器上創建一個通道,並使用connectTCPClient方法以上。 – gregwhitaker 2010-03-31 14:31:03

+0

我創建了'receiver'類型的頻道,但我無法激活它。我應該創建什麼類型的頻道? – 2010-04-01 07:13:23

2

你的文章提到你想用Python或Java運行。 Python我不能幫助,但前面的響應者確實很酷。就Java而言,也許我可以指出你正確的方向。 IBM同時支持Java和JMS,並提供了各自的示例程序。默認情況下,這些安裝在:

C:\ Program Files文件\ IBM \ WebSphere MQ的\工具\ wmqjava

C:\ Program Files文件\ IBM \ WebSphere MQ的\工具\ JMS

我也這裏提供了我自己的示例代碼: http://www.ibm.com/developerworks/websphere/techjournal/0610_woolf/0610_woolf.html

爲IBM的執行Java和JMS API WMQ的文件是在這裏: 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

+0

你說得對。我使用了客戶端綁定,而只有這種類型的模塊在預編譯形式中可用。在樣本中,我發現'MQSample.java',它似乎工作。謝謝。 – 2010-04-01 07:15:13