9

我知道 webjob 与 webapp 一起扩展,即如果我的 webapp 在 5 个实例上运行,那么 webjobs 也将在 5 个实例上运行。我只想知道是否有一种方法可以在网站的每个实例中拥有多个 webjob 实例。

注意:我已经有最大JobHostConfiguration.QueuesConfiguration.BatchSize = 32的值。

现在,我的 webapp 在 1 个实例上运行。Webjobs 正在同时处理 32 个。我的目标是同时处理 3*32 = 96。

实现此目标的一种可能方法是部署相同的 webjobs 3 次(为 webJobName 属性设置不同的名称),但我不确定这是否是一个好习惯。请给我指出适当的文件。

  1. config.Queues.NewBatchThreshold表示什么?

  2. config.Queues.NewBatchThreshold的默认值是多少?

  3. 对于队列处理, config.Queues.NewBatchThreshold的推荐值应该是多少?

4

1 回答 1

7

从https://github.com/Azure/azure-webjobs-sdk/issues/628复制 Jon 的答案:

NewBatchThreshold 是 SDK 刷新批次之前要在批次中处理的消息数。

例如,如果您的批处理大小为 20,NewBatchThreshold 为 5,则 SDK 每次会从队列中抓取 20 条消息,将它们传递给您的代码让您一一处理,然后当它下降到最后 5 条未处理时消息(所以你已经处理了 15 条)它将抓取接下来的 20 条消息。请参阅 “并行执行”下的此处

默认情况下,NewBatchThreshold 是 BatchSize 的一半(请参阅源代码),这就是为什么您看到批量大小为 1 的值为 0。

请注意,根据我刚刚打开的这个问题,我们想让这不那么令人困惑。

于 2016-06-10T05:22:20.503 回答