You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSO2 APIM 4.2开源版:如何将HTTP 404设为故障转移触发条件?

解决WSO2 APIM 4.2中404响应触发故障转移的问题

默认行为说明

WSO2 APIM的负载均衡/故障转移端点默认仅将连接超时、服务器宕机、5xx类服务端错误等视为端点故障(对应内部10xxx系列错误码),4xx类客户端错误(包括404)默认不会标记端点为故障,因此不会触发故障转移。

解决方案

方法1:添加404对应的内部错误码到端点故障触发列表

HTTP 404对应的WSO2内部错误码为101404,你可以手动将其添加到端点的错误处理配置中:

  1. 进入APIM Publisher,打开目标API,进入Endpoints页面,编辑你的负载均衡/故障转移端点。
  2. 找到Error Handling模块,在Error Codes输入框中手动添加101404,同时勾选Mark as Fault选项。
  3. 调整Failover After参数(建议设为1),确保单次404错误就触发故障转移。
  4. 保存配置并重新发布API。

方法2:自定义故障序列强制触发故障转移

如果方法1未生效,可通过自定义Fault Sequence捕获404并强制触发故障转移:

  1. 进入APIM管理控制台的Sequences页面,创建一个自定义序列,内容如下:
<sequence name="Custom404FaultSequence" xmlns="http://ws.apache.org/ns/synapse">
    <property name="HTTP_SC" expression="get-property('axis2', 'HTTP_SC')"/>
    <filter source="$ctx:HTTP_SC" regex="404">
        <then>
            <!-- 标记当前端点为故障,强制切换到备用端点 -->
            <property name="FORCE_ERROR_ON_SAME_ENDPOINT" value="true" scope="axis2"/>
            <property name="RETRY_ON_SAME_ENDPOINT" value="false" scope="axis2"/>
            <send/>
        </then>
        <else>
            <!-- 处理其他错误场景 -->
            <send/>
        </else>
    </filter>
</sequence>
  1. 回到API的端点配置页面,将上述自定义序列设置为该端点的Fault Sequence。
  2. 保存并重新发布API。

注意事项

  • 确保你的端点类型为Load Balance Endpoint或Failover Endpoint,且已正确配置备用服务器节点。
  • 若之前尝试勾选所有错误码未生效,大概率是因为默认选项中未包含101404,需手动输入添加该代码。

内容的提问来源于stack exchange,提问作者StackedOverflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 21:44:49