2010-12-14 11 views
7

से संदेशों को कैसे स्थानांतरित करें मेरे पास मेरे अनुप्रयोग में एक बग था जिसके कारण कई संदेशों को त्रुटि कतार में स्थानांतरित किया जा सकता है। अब जब मैंने बग तय कर दिया है, तो क्या उन्हें मूल कतार में वापस ले जाने का एक आसान तरीका है ताकि उन्हें संसाधित किया जा सके?NServiceBus: त्रुटि कतार

उत्तर

11

आप एक साधारण कमांड लाइन उपकरण, ReturnToSourceQueue.exe का उपयोग कर सकते हैं, जो NServiceBus के साथ शामिल है।

यह tools फ़ोल्डर आईआईआरसी में स्थित है।

+0

और अगर आप उन विधानसभाओं प्रतिबिंबित करती हैं, यह पता लगा कि कैसे इस प्रक्रिया के आसपास के अतिरिक्त टूलींग बनाने के लिए ताकि आप हमेशा सर्वर में प्रवेश करें और एक कमांड लाइन उपकरण को चलाने के लिए की जरूरत नहीं है करने के लिए बहुत आसान है। –

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(); 
      } 
संबंधित मुद्दे