2011-09-15 8 views
5

Tôi hiểu rằng tài liệu dịch vụ Hàng đợi MS Azure http://msdn.microsoft.com/en-us/library/windowsazure/dd179363.aspx cho biết hành vi đầu tiên (FIFO) không được đảm bảo.Cách đảm bảo hàng đợi azure FIFO

Tuy nhiên, ứng dụng của chúng tôi là như vậy mà TẤT CẢ các thư phải được đọc và xử lý theo thứ tự FIFO. Bất cứ ai có thể xin đề nghị làm thế nào để đạt được một FIFO đảm bảo bằng cách sử dụng dịch vụ hàng đợi Azure?

Cảm ơn bạn.

Trả lời

3

Mới nhất Bus Dịch vụ phát hành cung cấp thông điệp đáng tin cậy hàng đợi: Queues, topics and subscriptions

+0

Thnks Richrdbower –

+0

Thật không may, điều này dường như trả lời một câu hỏi khác với những gì OP hỏi. Xe buýt dịch vụ Azure là một con thú khác với dịch vụ xếp hàng Azure –

1

Bạn chỉ cần theo dõi các bước để đảm bảo Thông báo đặt hàng .:

1) Tạo một Hàng đợi có phiên được bật = false. 2) Trong lúc lưu thông điệp trong hàng đợi, cung cấp các phiên id như dưới đây: -

var message = new BrokeredMessage(item); 
message.SessionId = "LB"; 
Console.WriteLine("Response from Central Scoring System : " + item); 
client.Send(message); 

3) Trong khi tạo nhận cho thông điệp phục hồi: -

queueClient.OnMessage(s => 
{ 
    var body = s.GetBody<string>(); 
    var messageId = s.MessageId; 
    Console.WriteLine("Message Body:" + body); 
    Console.WriteLine("Message Id:" + messageId); 
}); 

4) Trong khi có id cùng phiên , nó sẽ tự động đảm bảo trật tự và đưa ra thông báo có thứ tự.

Cảm ơn !!

0

Tôi không biết bạn muốn xử lý thư nhanh như thế nào, nhưng nếu bạn cần có FIFO thực, không cho phép hàng đợi của Azure nhận nhiều thư cùng một lúc.

Sử dụng tính năng này tại "program.cs" của bạn ở đầu chức năng.

static void Main() 
      { 
       var config = new JobHostConfiguration(); 

       if (config.IsDevelopment) 
       { 
        config.UseDevelopmentSettings(); 
       } 
       config.Queues.BatchSize = 1; //Number of messages to dequeue at the same time. 
       config.Queues.MaxPollingInterval = TimeSpan.FromMilliseconds(100); //Pooling request to the queue. 


       JobHost host = new JobHost(config); 

....your initial information... 

      // The following code ensures that the WebJob will be running continuously 
      host.RunAndBlock(); 

Điều này sẽ nhận được một tin nhắn tại một thời điểm với thời gian chờ là 100 miligiây.

Tính năng này hoạt động hoàn hảo với webger của trình ghi nhật ký để ghi vào các tệp thông tin gây mê.

0

Các docs nói cho hàng đợi Azure lưu trữ rằng:

Tin nhắn trong hàng đợi lưu trữ thường đầu tiên-trong-đầu-out, nhưng đôi khi họ có thể ra khỏi trật tự; ví dụ: khi thời lượng hết giờ hiển thị của thông báo là hết hạn (ví dụ: do ứng dụng khách bị lỗi trong khi xử lý). Khi mức độ hiển thị thời gian chờ hết hạn, thông báo sẽ hiển thị trở lại trên hàng đợi cho một nhân viên khác để khử nó. Tại thời điểm đó, thông báo mới có thể nhìn thấy có thể được đặt trong hàng đợi (để được dequeued một lần nữa) sau khi một tin nhắn ban đầu được enqueued sau khi nó.

Có thể điều đó đủ tốt cho bạn? Khác sử dụng dịch vụ xe buýt.