ric*_*ard 3 azure-queues azure-webjobs
我有一个Azure队列存储触发的Webjob.我的webjob执行的过程是将数据索引到Azure搜索中.Azure搜索的最佳实践是将多个项目一起索引,而不是一次索引一个,这是出于性能原因(索引可能需要一些时间才能完成).
出于这个原因,我希望我的webjob将多个消息一起出列,这样我就可以遍历,处理它们,然后将它们全部索引到Azure Search中.
但是,我无法弄清楚如何让我的webjob一次出列一个以上.如何实现这一目标?
出于这个原因,我希望我的webjob将多个消息一起出列,这样我就可以遍历,处理它们,然后将它们全部索引到Azure Search中.
根据您的描述,我建议您可以尝试使用Microsoft.Azure.WebJobs.Extensions.GroupQueueTrigger来满足您的要求.
此扩展将使您能够触发功能并接收消息组,而不是像[QueueTrigger]那样接收单个消息.
更多细节,您可以参考下面的代码示例和文章.
安装:
Install-Package Microsoft.Azure.WebJobs.Extensions.GroupQueueTrigger
Run Code Online (Sandbox Code Playgroud)
Program.cs中:
static void Main()
{
var config = new JobHostConfiguration
{
StorageConnectionString = "...",
DashboardConnectionString = "...."
};
config.UseGroupQueueTriggers();
var host = new JobHost(config);
host.RunAndBlock();
}
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
如何将其更改为GroupQueueTrigger?这是一个简单的改变吗?
在我看来,这是一个很容易的变化.
您可以按照以下步骤操作:
1.从Nuget包管理器安装Microsoft.Azure.WebJobs.Extensions.GroupQueueTrigger包.
2.更改program.cs文件启用UseGroupQueueTriggers.
3.根据旧的触发功能更改webjobs功能.
注意:组队列消息触发器必须使用列表.
正如我的代码示例所示:
public static void MyFunction([GroupQueueTrigger("queue3", 10)]List<string> messages)
Run Code Online (Sandbox Code Playgroud)
此函数将从"queue3"获取10条消息,因此在此函数中,您可以更改函数循环消息列表并处理它们,然后将它们全部索引到Azure搜索中.
4.将您的webjobs发布到azure Web应用程序.
| 归档时间: |
|
| 查看次数: |
741 次 |
| 最近记录: |