Azure WebJobs - 基于用户的单例 WebJob

Azure WebJobs - Singleton WebJob on user basis

我需要运行,在预定的时间段内,为不同的用户做一份工作(例如 CRM 同步)。此同步由另一个函数放置在 ServiceBus 队列上的消息触发,该函数由 TimerTrigger 每 30 分钟触发一次。

现在我需要的是避免每个用户作业并行 运行 多次,即如果前一个作业是未完成。

让我们想象一下:

如何避免这种情况?

我是否必须为 Azure Lease Blob 手动实现逻辑?

谢谢。

使用 WebJob 的 [Singleton] 属性。这就像一个分布式锁。在下面,它是通过 blob 租约实现的。这是一个方法级别的属性。您可以提供一个 "scope" 来确定锁的粒度;范围可以基于绑定数据 有关详细信息,请参阅 https://github.com/Azure/azure-webjobs-sdk/wiki/Singleton