Uygulamamda, bir çok iletinin hata sırasına taşınmasına neden olan bir hata oluştu. Şimdi bu hatayı çözdüğümden, onları işlenebilmeleri için orijinal sıranıza geri getirmenin basit bir yolu var mı?NServiceBus: İletiler hata sırasından nasıl taşınır
7
A
cevap
11
NServiceBus ile birlikte gelen ReturnToSourceQueue.exe
numaralı basit bir komut satırı aracını kullanabilirsiniz.
Bu, tools
klasörü IIRC klasöründe bulunur.
4
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();
}
Bu derlemeleri yansıtırsanız, bu işlemi çevreleyen ek araçların nasıl yapılacağını anlamak oldukça kolaydır; bu nedenle, her zaman sunucuda oturum açmanız ve bir komut satırı aracını çalıştırmanız gerekmez. –