【问题标题】:NServiceBus: How to move messages from the error queueNServiceBus:如何从错误队列中移动消息
【发布时间】:2011-05-25 10:45:01
【问题描述】:

我的应用程序中有一个错误,导致许多消息被移到错误队列中。现在我已经修复了这个错误,有没有一种简单的方法可以将它们移回原始队列以便处理它们?

【问题讨论】:

    标签: msmq nservicebus


    【解决方案1】:
      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();
                }
    

    【讨论】:

      【解决方案2】:

      您可以使用简单的命令行工具ReturnToSourceQueue.exe,它包含在 NServiceBus 中。

      它位于tools 文件夹 IIRC。

      【讨论】:

      • 如果你反映了这些程序集,很容易弄清楚如何围绕这个过程制作额外的工具,这样你就不必总是登录到服务器并运行命令行工具。
      猜你喜欢
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      相关资源
      最近更新 更多