答案 0 :(得分:0)
根据article,我们可以找到原因,请参考它。
在幕后, TimerTrigger使用WebJobs SDK的Singleton功能来确保在任何给定时间只有一个触发函数的实例正在运行。当JobHost启动时,对于每个TimerTrigger函数,都会执行blob租约(Singleton Lock)。这种分布式锁定确保您的计划函数的任何一个实例都可以随时运行。
答案 1 :(得分:0)
我使用的是连续WebJob而不是TimerTrigger
(TimerTrigger
表示作业不是连续的)。您必须从代码中删除TimerTrigger
。
默认情况下,Continuous WebJob将在所有可用实例上执行。
在WebJob代码中,您必须注意正确锁定和完成消息以避免并发问题。
Peek()
方法不太适合并行处理,因为消息未被锁定或完成,并且它不关心其他锁。使用Receive()
或基于事件的RegisterMessageHandler()
patthern。
以下是一些文档: