是否有办法重试 Azure API 管理中的 "BackendConnectionFailure at transfer-response "错误?

问题描述 投票:0回答:1

我与一个旧的遗留 api 之间存在间歇性连接问题,该问题有时会导致 Azure API 管理部门返回 "BackendConnectionFailure at transfer-response "错误。根据我的经验,重试对旧版 api 的请求通常会成功。我有一个类似于下面的重试策略,正在检查 5xx 状态代码,但是,重试似乎没有发生。

<retry
    condition="@(context.Response.StatusCode == 500)"
    count="10"
    interval="10"
    max-interval="100"
    delta="10"
    first-fast-retry="false">
        <forward-request buffer-request-body="true" />
</retry>

经过进一步的研究,Application Insights似乎表明后端依赖的调用状态=false,但结果代码=200。

有什么方法可以检测到这种情况,从而进行重试,或者有什么其他策略可以使用?

azure-api-management
1个回答
1
投票

在您的上述策略中,重试仅涵盖从后端接收响应状态代码和头信息。APIM 不会主动读取响应体,而是直接从后端逐个传输到客户端。这就是 "传输响应 "的意思。那个时候你所有的策略都已经完成了。

避免这种情况的方法之一是在APIM端主动缓冲来自后端的响应。试着在出站时首先添加。

<set-body>@(context.Response.Body.As<byte[]>())</set-body>
© www.soinside.com 2019 - 2024. All rights reserved.