我正在尝试使用pymqi将字符串消息放入MQ中,代码如下:
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')
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,它不会引发任何错误。因此,我感到该消息已成功放入所需的Queue中。
但是,我希望在将上述消息发送到队列后,在我的应用程序屏幕之一中看到一条记录,并且这种情况没有发生。
如果我通过AppWatch(Web界面)输入相同的消息,则该消息有效,并且在应用程序UI上也可以看到预期的记录。
在AppWatch(Web界面)上,当我执行“放置消息”时,我提到的消息类型为:“字符串格式(MQFMT_STRING)”。
如何在代码中指定消息格式为“ MQFMT_STRING”?
感谢您的帮助。
根据PyMQI Docs,这是看跌期权的定义:
put(msg [,mDesc,putOpts])
将字符串缓冲区“ msg”放入队列。如果队列尚未打开,则使用选项“ MQOO_OUTPUT”将其打开。
mDesc是消息的pymqi.md()MQMD消息描述符。如果未传递或为None,则使用默认的md()对象。
putOpts是put调用的pymqi.pmo()MQPMO Put Message Options结构。如果未传递或为None,则使用默认的pmo()对象。
如果提供了mDesc和/或putOpts参数,则可以通过put操作对其进行更新。
因此,为了设置格式,需要提供MQMD消息描述符,mDesc即put调用中的参数。
我没有亲自尝试过,但是您的代码应类似于:
md = pymqi.MD()
md.Format = CMQC.MQFMT_STRING
putq.put(doc.toprettyxml(), md, None)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1417 次 |
| 最近记录: |