API管理高级策略-将并发限制为1

时间:2020-07-30 11:04:59

标签: azure api azure-api-management policies

我在Azure API管理中有一个具有多项操作的API。其中一个特定的操作应具有1个限制执行并发。我试图通过以下后端策略来限制并行执行,如Microsoft Docs所述。

<backend>
    <limit-concurrency key="general" max-count="1">
        <forward-request timeout="120" />
    </limit-concurrency>
</backend>

https://docs.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#LimitConcurrency

不幸的是,此限制的行为是我可以同时执行两次操作。第三次并行执行将产生429状态代码。

有人知道为什么最大数量为1导致最大数量为2?

1 个答案:

答案 0 :(得分:0)

使用并发控制,我们可以确保后端系统的并发呼叫不超过2个,并且所有之后的呼叫都排队到最大限制,并在2个并发呼叫之一完成后立即进行处理。确保不要在重试和空闲时间浪费资源。使用并发控件很简单,这是以下策略:

<limit-concurrency key="general" max-count="1" timeout="120" max-queue-length="100">
    <forward-request timeout="120" />
</limit-concurrency>

有关更多详细信息,您可以参考此article