编辑队列中的MSMQ消息

时间:2012-03-09 16:53:40

标签: c# msmq nservicebus

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

我想制作自己的自定义工具(因为我的消息需要特定的格式才能让支持人员轻松阅读)。

我知道这是可能的,因为应用程序“QueueExplorer”就是这样做的。

有谁知道如何加载MSMQ消息(不是队列中的第一个消息),编辑它,然后将其保存回队列?

2 个答案:

答案 0 :(得分:3)

使用以下内容迭代消息:

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);
}

答案 1 :(得分:3)

MSMQ消息应该是不可变的。您可以做的最好的事情是阅读消息并将编辑后的消息副本发送回队列。