如何在 IronPython 中使用标签、回复队列和其他属性创建新的 MSMQ 消息
How to create a new MSMQ message in IronPython with label, reply queue and other properties
我按照此示例 here 将 MS 消息队列与 IronPython 结合使用。
该示例用于创建没有任何属性的消息文本字符串。
import clr
clr.AddReference('System.Messaging')
from System.Messaging import MessageQueue
ourQueue = '.\private$\myqueue'
queue = MessageQueue(ourQueue)
queue.Send('Hello from IronPython')
我正在尝试创建一条空消息,然后添加属性(如标签、回复队列和二进制消息正文),然后发送完整的消息。
我如何在 IronPython 中执行此操作?
消息class的文档是here,但显然没有python示例代码。我从未将 .net 代码与 python 一起使用,只是安装了 IronPython 以连接到现有的 MSMQ 环境,所以我有点不知该如何继续。
有什么帮助吗?
更新
查看下面的答案,我猜到了创建消息的系统。
该解决方案似乎有点老套,所以我将其开放几天
我认为这不适用于 IronPython 类,因为序列化和反序列化它们不像在 c#/.net 中那样工作 类。
完成这项工作的唯一方法是获取 IronPython 类 serialize-able 和 deserialize-able。我认为反序列化将是困难的部分。但你可能会证明我错了。
我已经开始通过检查 c# 示例和
已经破解了问题的解决方案。以下代码
传递带有用户定义标签和响应队列的消息以及正文消息。
import clr
from System import Array
from System import Byte
clr.AddReference('System.Messaging')
from System.Messaging import MessageQueue
from System.Messaging import Message
ourQueue = '.\private$\python_in'
ourOutQueue = '.\private$\python_out'
if not MessageQueue.Exists(ourQueue):
queue = MessageQueue.Create(ourQueue)
else:
queue = MessageQueue(ourQueue)
if not MessageQueue.Exists(ourOutQueue):
out_queue = MessageQueue.Create(ourOutQueue)
else:
out_queue = MessageQueue(ourOutQueue)
mymessage = Message()
mymessage.Label = 'MyLabel'
mymessage.ResponseQueue = out_queue
mystring = 'hello world'
mybytearray = bytearray(mystring)
# this is very hacky
mymessage.BodyStream.Write(Array[Byte](mybytearray),0,len(mybytearray))
queue.Send(mymessage)
我按照此示例 here 将 MS 消息队列与 IronPython 结合使用。 该示例用于创建没有任何属性的消息文本字符串。
import clr
clr.AddReference('System.Messaging')
from System.Messaging import MessageQueue
ourQueue = '.\private$\myqueue'
queue = MessageQueue(ourQueue)
queue.Send('Hello from IronPython')
我正在尝试创建一条空消息,然后添加属性(如标签、回复队列和二进制消息正文),然后发送完整的消息。
我如何在 IronPython 中执行此操作?
消息class的文档是here,但显然没有python示例代码。我从未将 .net 代码与 python 一起使用,只是安装了 IronPython 以连接到现有的 MSMQ 环境,所以我有点不知该如何继续。
有什么帮助吗?
更新
查看下面的答案,我猜到了创建消息的系统。 该解决方案似乎有点老套,所以我将其开放几天
我认为这不适用于 IronPython 类,因为序列化和反序列化它们不像在 c#/.net 中那样工作 类。
完成这项工作的唯一方法是获取 IronPython 类 serialize-able 和 deserialize-able。我认为反序列化将是困难的部分。但你可能会证明我错了。
我已经开始通过检查 c# 示例和 已经破解了问题的解决方案。以下代码 传递带有用户定义标签和响应队列的消息以及正文消息。
import clr
from System import Array
from System import Byte
clr.AddReference('System.Messaging')
from System.Messaging import MessageQueue
from System.Messaging import Message
ourQueue = '.\private$\python_in'
ourOutQueue = '.\private$\python_out'
if not MessageQueue.Exists(ourQueue):
queue = MessageQueue.Create(ourQueue)
else:
queue = MessageQueue(ourQueue)
if not MessageQueue.Exists(ourOutQueue):
out_queue = MessageQueue.Create(ourOutQueue)
else:
out_queue = MessageQueue(ourOutQueue)
mymessage = Message()
mymessage.Label = 'MyLabel'
mymessage.ResponseQueue = out_queue
mystring = 'hello world'
mybytearray = bytearray(mystring)
# this is very hacky
mymessage.BodyStream.Write(Array[Byte](mybytearray),0,len(mybytearray))
queue.Send(mymessage)