我有一个网站的多个实例,所有实例都运行同一个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"
});