我有一个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
我已经更新了我的答案。 –