我有一個Azure隊列存儲觸發的Webjob。我的webjob執行的過程是將數據編入索引到Azure搜索。 Azure搜索的最佳做法是將多個項目一起索引,而不是一次索引,這是出於性能方面的考慮(編制索引可能需要一些時間才能完成)。Azure隊列存儲觸發Webjob - 一次出隊多個郵件
由於這個原因,我希望我的webjob能夠將多個消息一起出隊,以便循環,處理它們,然後將它們一起編入Azure搜索。
但是我無法弄清楚如何讓我的webjob一次多出一個隊列。這如何實現?
我有一個Azure隊列存儲觸發的Webjob。我的webjob執行的過程是將數據編入索引到Azure搜索。 Azure搜索的最佳做法是將多個項目一起索引,而不是一次索引,這是出於性能方面的考慮(編制索引可能需要一些時間才能完成)。Azure隊列存儲觸發Webjob - 一次出隊多個郵件
由於這個原因,我希望我的webjob能夠將多個消息一起出隊,以便循環,處理它們,然後將它們一起編入Azure搜索。
但是我無法弄清楚如何讓我的webjob一次多出一個隊列。這如何實現?
由於這個原因,我想讓我的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);
}
}
結果:
我將如何得到改變爲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應用程序。
我已經有一個QueueTrigger項目工作。我將如何獲得改爲GroupQueueTrigger?這是一個簡單的改變嗎? – richard
我已經更新了我的答案。 –