【发布时间】:2018-06-08 14:44:01
【问题描述】:
【问题讨论】:
-
请将代码包含为文本而不是屏幕截图
【问题讨论】:
根据这个article,我们可以找到原因,请参考。
在幕后,TimerTrigger 使用 WebJobs SDK 的 Singleton 功能来确保在任何给定时间只有一个触发函数实例在运行。当 JobHost 启动时,每个 TimerTrigger 函数都会使用一个 blob 租约(单例锁)。这种分布式锁确保在任何时候都只有一个调度函数的实例在运行。
【讨论】:
我会使用连续 WebJob 而不是 TimerTrigger(TimerTrigger 表示作业不是连续的)。您必须从代码中删除 TimerTrigger。
默认情况下,Continuous WebJob 将在所有可用实例上执行。
在 WebJob 代码中,您必须注意消息已正确锁定并完成以避免并发问题。
Peek() 方法不太适合并行处理,因为消息没有锁定或完成,它不关心其他锁。使用Receive() 或基于事件的RegisterMessageHandler() 模式。
以下是一些相关文档:
【讨论】: