2010-12-14 28 views
7

Tôi đã gặp lỗi trong ứng dụng khiến một số thư được chuyển vào hàng đợi lỗi. Bây giờ tôi đã sửa lỗi, có cách nào đơn giản để chuyển chúng trở lại hàng đợi ban đầu để chúng có thể được xử lý không?NServiceBus: Cách di chuyển thư từ hàng đợi lỗi

Trả lời

11

Bạn có thể sử dụng công cụ dòng lệnh đơn giản, ReturnToSourceQueue.exe, được bao gồm trong NServiceBus.

Nó nằm trong thư mục tools IIRC.

+0

Và nếu bạn phản ánh các hội đồng đó, bạn sẽ dễ dàng tìm ra cách tạo thêm công cụ xung quanh quy trình này để không phải đăng nhập vào máy chủ và chạy công cụ dòng lệnh. –

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(); 
      } 
Các vấn đề liên quan