限制跨 Azure 函数主机的并发调用数

Limit Number of Concurrent Calls Across Azure Function Hosts

要限制打开的数据库连接数,我需要限制并发函数调用的数量。

MassTransit 的 UseConcurrentMessageLimit 显然限制了每个主机实例将同时处理的消息数量,这与 host.json 中的 maxConcurrentCalls 相同吗?

Azure 门户具有 App Scale Out -> Maximum Scale Out Limit,它限制了将创建的主机数量。

要将同时函数调用的数量限制为 n,我应该设置 最大扩展限制 * UseConcurrentMessageLimit or maxCurrentCalls = n?

我可以使用 MassTransit 或 Azure Functions 配置中的一个参数实现这一目标吗?

对于 MassTransit,对于给定的接收端点,ConcurrentMessageLimit 应该用于限制在该特定接收端点上执行的并发消费者数量。此设置仅影响该服务实例上的接收端点。

如果您有多个实例,硬性限制为 back-end 数据库有 100 个连接,并且每个实例的 ConcurrentMessageLimit 为 20,那么您最多可以有 5 个实例保持在 100 个连接限制内(假设每个消费者使用一个连接到数据库)。

Both UseConcurrentMessageLimit and MaxConcurrentCalls are deprecated and retained only for backwards compatibility. The only configuration value that should be used for current applications is ConcurrentMessageLimit. This is covered in this video.

Azure 函数

嘿,你说的是 Azure Functions。 MassTransit 无法控制用于提取消息并将其传递给消费者的接收器。我认为 host.json 是您需要配置它的地方,它可能与 maxConcurrentCalls 类似。