Wait
适用于:所有 API 管理层级
wait
策略以并行方式执行其直接子策略,在完成之前会等待其直接子策略全部完成或其中一个完成。 wait
策略可以将下面的一项或多项作为其直接子策略:send-request
、cache-lookup-value
和 choose
策略。
注意
按照策略声明中提供的顺序设置策略的元素和子元素。 详细了解如何设置或编辑 API 管理策略。
策略语句
<wait for="all | any">
<!--Wait policy can contain send-request, cache-lookup-value,
and choose policies as child elements -->
</wait>
属性
属性 | 说明 | 需要 | 默认 |
---|---|---|---|
for | 确定 wait 策略是等待所有直接子策略完成,还是只等待其中之一完成。 允许值包括:- all - 等待所有直接子策略完成- any - 等待任一直接子策略完成。 第一个直接子策略完成后,wait 策略即告完成,同时会终止执行任何其他直接子策略。允许使用策略表达式。 |
否 | all |
元素
可能只包含 send-request
、cache-lookup-value
、choose
策略作为子元素。
使用情况
示例
在以下示例中有两个 choose
策略,充当 wait
策略的直接子策略。 这些 choose
策略都可以并行执行。 每个 choose
策略都会尝试检索缓存的值。 如果缓存未命中,则会调用后端服务来提供值。 在此示例中,wait
策略在完成之前必须等待其所有直接子策略完成,因为 for
属性设置为 all
。 在此示例中,上下文变量(execute-branch-one
、value-one
、execute-branch-two
、value-two
)是在此示例策略范围外声明的。
<wait for="all">
<choose>
<when condition="@((bool)context.Variables["execute-branch-one="])">
<cache-lookup-value key="key-one" variable-name="value-one" />
<choose>
<when condition="@(!context.Variables.ContainsKey("value-one="))">
<send-request mode="new" response-variable-name="value-one">
<set-url>https://backend-one</set-url>
<set-method>GET</set-method>
</send-request>
</when>
</choose>
</when>
</choose>
<choose>
<when condition="@((bool)context.Variables["execute-branch-two="])">
<cache-lookup-value key="key-two" variable-name="value-two" />
<choose>
<when condition="@(!context.Variables.ContainsKey("value-two="))">
<send-request mode="new" response-variable-name="value-two">
<set-url>https://backend-two</set-url>
<set-method>GET</set-method>
</send-request>
</when>
</choose>
</when>
</choose>
</wait>
相关策略
后续步骤
有关使用策略的详细信息,请参阅:
- 教程:转换和保护 API
- 策略参考,其中提供了策略语句及其设置的完整列表
- 策略表达式
- 设置或编辑策略
- 策略示例