使用Azure WebJobs进行并行Blob处理



我有一个网站的多个实例,所有实例都运行同一个WebJob,连接到同一个AzureWebJobsStorage,并配置为在传入Blob时触发。

不幸的是,结果与我的预期不同——当一个blob被保存到存储器中时,只有一个WebJobs实例会拾取它。我宁愿让他们所有人都处理这个斑点。我的猜测是,由于blob收据名称是如何构建的,它的工作原理是这样的——它包含的WebJob函数名称与我所有的WebJob相同。

在这种情况下,是否有任何方法可以让所有WebJob实例处理blob?

我刚刚自己找到了这个问题的答案。事实证明,可以配置HostId,它包含在blob的收据名称中。对我来说,以下代码完成了任务:

var applicationName = Environment.GetEnvironmentVariable("WEBSITE_SITE_NAME");
var host = new JobHost(new JobHostConfiguration
                                       {
                                           HostId = applicationName ?? "localhost"
                                       });

最新更新