1

我正在尝试扩展一个连续的网络作业。我的服务计划是按标准设置的,因此我可以扩展 10 个实例。问题是 webjob 没有横向扩展,并且在任何时候,只有一个在运行。

实例数: 在此处输入图像描述

职能: 在此处输入图像描述

功能代码: 在此处输入图像描述

4

2 回答 2

1

根据这篇文章,我们可以找到原因,请参考。

在幕后,TimerTrigger 使用 WebJobs SDK 的 Singleton 特性来确保在任何给定时间只运行触发函数的单个实例。当 JobHost 启动时,每个 TimerTrigger 函数都会使用一个 blob 租约(单例锁)。这种分布式锁确保在任何时候只有一个计划函数的实例在运行。

于 2018-06-11T06:00:09.653 回答
0

我会使用一个连续的 WebJob 而不是一个带有TimerTrigger(TimerTrigger表示该作业不是连续的)。您必须TimerTrigger从代码中删除 。

默认情况下,Continuous WebJob 将在所有可用实例上执行。

在 WebJob 代码中,您必须注意消息是否正确锁定并完成以避免并发问题。

Peek()方法不太适合并行处理,因为消息没有锁定或完成,并且不关心其他锁。使用其中一个Receive()或基于事件的RegisterMessageHandler()模式。

以下是一些相关文档:

于 2018-06-13T13:06:39.977 回答