Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NServiceBus: How to move messages from the error queue

I had a bug in my application that cause a number of messages to be moved into the error queue. Now that I have fixed the bug, is there a simple way to move them back to the original queue so they can be processed?

like image 374
skb Avatar asked Dec 14 '10 17:12

skb


2 Answers

You can use a simple command line tool, ReturnToSourceQueue.exe, which is included with NServiceBus.

It's located in the tools folder IIRC.

like image 83
mookid8000 Avatar answered Sep 23 '22 13:09

mookid8000


  private const string QUEUE_NAME = "private$\\localqueue";
  private const string ERROR_QUEUE_NAME = "private$\\localerrorqueue";

            if (!MessageQueue.Exists(".\\" + QUEUE_NAME))
                return;

            if (!MessageQueue.Exists(".\\" + ERROR_QUEUE_NAME))
                return;

            var messageQueues = MessageQueue.GetPrivateQueuesByMachine(Environment.MachineName);

            var queue = messageQueues.Single(x => x.QueueName == QUEUE_NAME);
            var errorQueue = messageQueues.Single(x => x.QueueName == ERROR_QUEUE_NAME);

            var noOfErrorMessages = errorQueue.GetAllMessages().Count();

            if (noOfErrorMessages == 0)
                return;

            using (var transaction = new MessageQueueTransaction())
            {
                transaction.Begin();

                for (var i = 0; i < noOfErrorMessages; i++)
                {
                    var message = errorQueue.Receive(transaction);
                    queue.Send(message, transaction);
                }

                transaction.Commit();
            }
like image 36
sharky101 Avatar answered Sep 25 '22 13:09

sharky101