Vaccano
Vaccano

Reputation: 82507

Edit MSMQ messages in a queue

I need to be able to edit messages in my error queue (so that they can be resent to the actual queue for reprocessing).

I would like to make my own custom tool to do this (because my messages require specific formatting to make them easily readable by support personnel).

I know that this is possible because the application "QueueExplorer" does this.

Does anyone know how I can load an MSMQ message (that is not the first one in the queue), edit it, and save it back to the queue?

Upvotes: 6

Views: 3515

Answers (2)

John Breakwell
John Breakwell

Reputation: 4687

MSMQ messages are supposed to be immutable. The best you can do is read the message and send an edited copy of the message back to the queue.

Upvotes: 3

Cronan
Cronan

Reputation: 193

Iterate through the messages, using something like this:

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

You can then iterate through the list, processing each message. Create a new message, based on the original. Then remove the existing message, and add the new one.

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

Upvotes: 3

Related Questions