编辑队列中的MSMQ消息

本文关键字:MSMQ 消息 队列 编辑 | 更新日期: 2023-09-27 18:27:28

我需要能够编辑错误队列中的消息(以便将它们重新发送到实际队列进行重新处理)。

我想制作自己的自定义工具来完成这项工作(因为我的消息需要特定的格式,以便支持人员轻松阅读)。

我知道这是可能的,因为应用程序"QueueExplorer"可以做到这一点。

有人知道我如何加载MSMQ消息(这不是队列中的第一条消息)、编辑它并将其保存回队列吗?

编辑队列中的MSMQ消息

使用以下内容遍历消息:

List<Message> msgList = new List<Message>();
using (MessageEnumerator me = queue.GetMessageEnumerator2())
{
  while (me.MoveNext(new TimeSpan(0, 0, 0)))
  {
     Message message = me.Current;
     msgList.Add(message)
  }
}

然后,您可以遍历列表,处理每条消息。在原始邮件的基础上创建新邮件。然后删除现有消息,然后添加新消息。

foreach (Message message in msgList)
{
  //Create a new message as required, add it, then remove the old message
  MessageQueue.ReceiveById(message.MessageId);
}

MSMQ消息应该是不可变的。您所能做的最好的事情就是读取消息并将经过编辑的消息副本发送回队列。