我需要在预定的时间段内为不同的用户运行工作(例如,CRM同步)。此同步由每隔30分钟由TimerTrigger触发的另一个函数放置的ServiceBus队列上的消息触发。
现在我需要的是避免每个用户作业并行运行多次,即如果前一个作业没有完成,我需要阻止同一个用户处理同一个作业。 / p>
让我们像这样形象化:
如何避免这种情况?
我是否必须手动实现Azure Lease Blobs的逻辑?
感谢。
答案 0 :(得分:3)
使用WebJob的[Singleton]属性。这就像一个分布式锁。在下面,它是用blob租约实现的。这是方法级别属性。你可以提供一个"范围"它决定了锁的粒度;范围可以基于绑定数据 有关详细信息,请参阅https://github.com/Azure/azure-webjobs-sdk/wiki/Singleton。