Từ câu hỏi của bạn, tôi hiểu bạn có 2 hàng đợi và mỗi hàng đợi cần phải được sử dụng để xử lý các nhiệm vụ khác nhau/công việc.
Bạn có thể làm theo các cách tiếp cận
1) Triển khai 2 việc làm Web, mỗi đợi vào hàng đợi khác nhau và kích hoạt công việc tương ứng với bất cứ khi nào một thông báo xuất hiện trên hàng đợi tương ứng. Mã cấu hình bạn đã đề cập ở trên đặt cơ sở cho một công việc. Và AFAIK, một công việc có thể chờ đợi trên một hàng đợi. Bạn có thể có một phương pháp như thế này bên cạnh Main()
phương pháp
public static void ProcessQueueMessage([QueueTrigger("logqueue")] string logMessage)
{
//do something
}
2) nếu bạn muốn kích hoạt nhiều kịch bản dựa trên các tin nhắn từ một hàng đợi, bạn có thể có một nếu khối khác trên phương pháp ProcessQueueMessage
hoặc nếu bạn muốn làm cho nó dễ quản lý hơn, sử dụng mẫu Chiến lược để thực hiện đúng phương thức từ ProcessQueueMessage
Nếu bạn làm theo # 1 ở trên, bạn sẽ triển khai các công việc web khác nhau cho mỗi công việc/kịch bản. Nếu bạn làm theo số 2 ở trên, bạn sẽ triển khai một công việc trên web và những gì mỗi thư được thực hiện sẽ được quyết định trong khi xử lý thư.
Documentation liên quan đến chờ đợi vào hàng đợi here.
[Cập nhật]
Như chúng ta đã biết một công việc web thể chờ đợi trên chỉ có một hàng đợi, chờ đợi vào hàng đợi không phải là cách tiếp cận đúng trong trường hợp này. Tốt hơn kích hoạt công việc web định kỳ (nói một lần trong 5 phút). Logic để dequeue tin nhắn từ nhiều hàng đợi và xử lý chúng sẽ là một phần của một công việc web. Xử lý mỗi hàng đợi có thể là một phương thức được gọi bởi công việc cùng một trang web (cái khác hoặc đồng thời sử dụng Task
). Bạn có thể chuyển số tin nhắn trên CloudQueue.GetMessages
cho mỗi hàng đợi. Nó sẽ rất giống với dịch vụ windows. Chỉ cần phần kích hoạt được thực hiện bởi công việc web và nó chạy như một công việc web chứ không phải là dịch vụ cửa sổ. Dưới đây là một mã giả thô:
main()
{
// initialize webjob
}
public static MyWebJobMethod(...)
{
Task a =() => {//process queue 1};
Task b =() => {//process queue 2}
Task.WaitAll(a,b);
}
cảm ơn câu trả lời của bạn, tôi không có tùy chọn để triển khai nhiều công việc trên web, thực ra tôi đang chạy dịch vụ cửa sổ Điều đó làm cho vai trò của công việc web hoàn toàn ổn, vấn đề là làm thế nào tôi có thể đặt "Số lượng tin nhắn xếp hàng tối đa được chọn đồng thời", mỗi hàng đợi giả sử một trình kích hoạt sẽ kích hoạt một lúc và có thể có cấu hình mặc định. –
http://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-queues-how-to/#config –
cập nhật câu trả lời của tôi ... – Amit