Azure Function batchSize

时间:2019-07-01 19:41:07

标签: azure azure-functions

我想知道Azure Function中的并行原理。如果我的batchSize是32,阈值是16。如果队列变大,则Scale控制器会旋转一个新函数来承受压力。我了解这一点。我不明白的是:单个实例是否可以批量处理?也就是说,我只有一个函数运行pr batch,还是运行时扩展并使用该函数运行多个线程?

我是否可以冒险运行两个实例,每个实例带有32条消息,并同时运行32个线程,一次运行32个函数?

想象我有一个调用webapi的函数。这意味着该api将一次获得我不希望的64次调用。

我想要的是2个函数处理32条消息,每条函数调用1条pr消息pr函数。

我希望你们能理解。

1 个答案:

答案 0 :(得分:0)

是的。实际上,缩放就是这样工作的。 docs中也详细解释了这一点。

因此,您的函数(一个实例)一次最多可以运行48条消息(新批次中的32条消息,现有批次中的16条消息),并可能根据队列长度扩展到多个实例。

要实现您提到的方案,您必须

  1. batchSize设置为1,以避免每个实例并行处理
  2. WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT应用设置设为2,以将横向扩展限制为最多2个实例

请注意,所有32条消息都不会由任何一个实例加载,但仍将在队列中工作。