Python pymqi: как указать формат сообщения для помещения в очередь

Я пытаюсь поместить строковое сообщение в MQ с помощью pymqi, код выглядит следующим образом:

import xml.dom.minidom as minidom
import pymqi

class PutMQ:
    def put_mq(args1):
        doc = minidom.parse(args1)                       
        queue_manager = "NameQueueManager"
        channel = "ChannelName"
        host = "HostName"
        port = "PortNumber"
        conn_info = "%s(%s)" % (host, port)

        qmgr = pymqi.QueueManager(None)

        qmgr.connectTCPClient(queue_manager, pymqi.cd(), channel, conn_info)

        putq = pymqi.Queue(qmgr, 'QueueName')


        putq.put(doc.toprettyxml())

        putq.close()
        qmgr.disconnect()
    put_mq('C://MQ//myMessage.xml')

Когда я запускаю этот код, он не вызывает ошибок. Следовательно, у меня такое ощущение, что сообщение было успешно помещено в требуемую очередь.

Однако я ожидаю увидеть запись на одном из экранов моего приложения после того, как я отправлю указанное выше сообщение в очередь, а этого не происходит.

Если я отправлю то же сообщение через AppWatch (веб-интерфейс), оно сработает, и я также увижу ожидаемую запись в пользовательском интерфейсе приложения.

В AppWatch (веб-интерфейсе), когда я выполняю «Поместить сообщение», я упоминаю тип сообщения как «Формат строки (MQFMT_STRING)».

Как я могу указать в моем коде, что формат сообщения - MQFMT_STRING?

Цените вашу помощь в этом.


person Ravi K    schedule 23.06.2016    source источник


Ответы (1)


Согласно документам PyMQI, это определение вызова пут:

put (msg [, mDesc, putOpts])

Поместите строковый буфер «msg» в очередь. Если очередь еще не открыта, теперь она открывается с опцией «MQOO_OUTPUT».

mDesc - это дескриптор сообщения MQMD pymqi.md () для сообщения. Если он не передан или равен None, то используется объект md () по умолчанию.

putOpts - это структура параметров сообщения Pymqi.pmo () MQPMO Put для вызова put. Если он не передан или равен None, то используется объект pmo () по умолчанию.

Если были предоставлены аргументы mDesc и / или putOpts, они могут быть обновлены операцией put.

Итак, чтобы установить формат, вам необходимо предоставить дескриптор сообщения MQMD, параметр mDesc в вызове put.

Я сам не пробовал, но ваш код должен выглядеть примерно так:

md = pymqi.MD()
md.Format = CMQC.MQFMT_STRING
putq.put(doc.toprettyxml(), md, None)
person Morag Hughson    schedule 23.06.2016
comment
Рад слышать, что теперь это работает на вас. Не забудьте принять ответ (нажав на галочку), если вы считаете, что он решил вашу проблему. - person Morag Hughson; 24.06.2016