缩放

Azure Webjobs 在 Azure 应用服务上运行。如果我们水平扩展 App Service(添加新实例),每个实例都有自己的 JobHost

请注意,这仅适用于在连续模式下运行的 WebJobs。按需和预定的 WebJobs 不受水平扩展的影响,它们始终运行单个实例。

如果你有连续的 WebJob 处理队列消息,并且你将 App Service Plan 扩展到 3 个实例,则将运行 3 个 WebJob 实例。

你可能希望在单个实例中运行 WebJobs,因为你可能需要确保只存在一个处理管道。对于那些 WebJobs,你可以添加 Singleton 属性。

[Singleton]
public static void SingletonQueueProcessing([QueueTrigger("my_queue")] MyPOCOClass aMessage)
{
    //...
}

这是通过 Azure Blob Leases 实现的,用于分布式锁定。