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?
NServiceBus: How to move messages from the error queue
Asked Answered
You can use a simple command line tool, ReturnToSourceQueue.exe
, which is included with NServiceBus.
It's located in the tools
folder IIRC.
And if you reflect those assemblies, it's pretty easy to figure out how to make additional tooling surrounding this process so you don't always have to log in to the server and run a command line tool. –
Infusorian
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();
}
© 2022 - 2024 — McMap. All rights reserved.