2010-12-14 4 views

Antwort

11

Sie können das einfache Befehlszeilenprogramm ReturnToSourceQueue.exe verwenden, das in NServiceBus enthalten ist.

Es befindet sich in der tools Ordner IIRC.

+0

Und wenn Sie diese Baugruppen widerspiegeln, ist es ziemlich einfach herauszufinden, wie Sie zusätzliche Werkzeuge für diesen Prozess erstellen, so dass Sie sich nicht immer beim Server anmelden und ein Befehlszeilentool ausführen müssen. –

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(); 
      } 
Verwandte Themen