Как подключиться к локальной очереди MQseries с помощью Python? - PullRequest
5 голосов
/ 29 марта 2010

Я новичок в mqseries и начал с проклятий IBM WebSphere MQ. Есть примеры с 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 локальной очередью.

Что не так с моим кодом?

Ответы [ 2 ]

3 голосов
/ 29 марта 2010

Исходя из ошибки, кажется, что вы пытаетесь подключиться к удаленному администратору очередей, но для подключения вы используете метод привязок локального администратора очередей. Я говорю это, потому что ошибка говорит о том, что клиент 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)
2 голосов
/ 31 марта 2010

В вашем сообщении упоминается, что вы хотите, чтобы это выполнялось на 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 API Java и JMS 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

...