2017-06-05 170 views
1

我有一個Azure隊列存儲觸發的Webjob。我的webjob執行的過程是將數據編入索引到Azure搜索。 Azure搜索的最佳做法是將多個項目一起索引,而不是一次索引,這是出於性能方面的考慮(編制索引可能需要一些時間才能完成)。Azure隊列存儲觸發Webjob - 一次出隊多個郵件

由於這個原因,我希望我的webjob能夠將多個消息一起出隊,以便循環,處理它們,然後將它們一起編入Azure搜索。

但是我無法弄清楚如何讓我的webjob一次多出一個隊列。這如何實現?

回答

3

由於這個原因,我想讓我的webjob將多個消息一起出隊,這樣我就可以循環,處理它們,然後將它們一起索引到Azure搜索中。

根據您的描述,我建議您可以嘗試使用Microsoft.Azure.WebJobs.Extensions.GroupQueueTrigger來實現您的要求。

此擴展將使您能夠觸發功能並接收消息組而不是像[QueueTrigger]那樣的單個消息。

更多細節,你可以參考下面的代碼示例和article

安裝:

Install-Package Microsoft.Azure.WebJobs.Extensions.GroupQueueTrigger 

的Program.cs:

static void Main() 
     { 
      var config = new JobHostConfiguration 
      { 
       StorageConnectionString = "...", 
       DashboardConnectionString = "...." 
      }; 
      config.UseGroupQueueTriggers(); 
      var host = new JobHost(config); 
      host.RunAndBlock(); 
     } 

Function.cs:

//Receive 10 messages at one time 
public static void MyFunction([GroupQueueTrigger("queue3", 10)]List<string> messages) 
     { 
      foreach (var item in messages) 
      { 
       Console.WriteLine(item); 
      } 
     } 

結果:

enter image description here


我將如何得到改變爲GroupQueueTrigger?這是一個簡單的改變嗎​​?

在我看來,這是一個簡單的改變。

你可以按照下面的步驟:

1.安裝從NuGet包管理器包Microsoft.Azure.WebJobs.Extensions.GroupQueueTrigger。

2.更改program.cs文件啓用UseGroupQueueTriggers。

3.根據舊的觸發功能更改webjobs功能。

注意:組隊列消息觸發器必須使用列表。

至於我的代碼示例所示:

public static void MyFunction([GroupQueueTrigger("queue3", 10)]List<string> messages) 

此功能將得到「隊列3」一次性10個消息,因此在這個功能,你可以改變的功能迴路的消息的列表,並對其進行處理,然後將它們一起索引到Azure搜索。

4.發佈您的webjobs到天藍色的web應用程序。

+0

我已經有一個QueueTrigger項目工作。我將如何獲得改爲GroupQueueTrigger?這是一個簡單的改變嗎​​? – richard

+0

我已經更新了我的答案。 –