7
我的應用程序中有一個錯誤導致大量消息被移入錯誤隊列。現在我已經修復了這個錯誤,是否有一種簡單的方法將它們移回原始隊列,以便它們可以被處理?NServiceBus:如何從錯誤隊列中移動消息
我的應用程序中有一個錯誤導致大量消息被移入錯誤隊列。現在我已經修復了這個錯誤,是否有一種簡單的方法將它們移回原始隊列,以便它們可以被處理?NServiceBus:如何從錯誤隊列中移動消息
您可以使用包含在NServiceBus中的簡單命令行工具ReturnToSourceQueue.exe
。
它位於tools
文件夾IIRC。
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();
}
如果你反映這些組件,這是很容易弄清楚如何使圍繞這一過程中額外的工具,所以你不必總是登錄到服務器並運行一個命令行工具。 – 2010-12-15 16:21:09