我是Azure API管理的新手。我们正在从Azure API管理中调用外部Web api。如果Web api无法与Azure API管理进行通信,我们将在放弃之前尝试重试几次。
我们在出站节点(策略)中添加了重试策略,以检查后端节点(策略)的响应状态。如果响应状态不是200,则我们尝试在10秒后再次调用Web API。我们想在放弃之前先尝试2次。
问题是出站节点(策略)始终执行发送请求节点(策略),即使我们只是编写
<retry condition="@(false)" count="2" interval="10" first-fast-
retry="false">
<send-request.....>
......
......
</send-request>
</retry>
如何在重试策略中写入条件,以便在执行子节点之前对其进行检查。
<outbound>
<base />
<retry condition="@(context.Response.StatusCode != 200)" count="2" interval="10" first-fast-retry="false">
<send-request mode="new" response-variable-name="responseVar" ignore-error="false">
<set-url>... </set-url>
<set-method>POST</set-method>
<set-body>...</set-body>
<set-header>...</set-header>
</retry>
</outbound>
答案 0 :(得分:0)
重试始终执行其内部策略,并且仅在第一次和后续执行之后检查条件。这个想法是检查内部策略的一些结果,以确定是否需要再次执行它们。要预先检查条件,您必须将其包装到选择策略中。