TsgcWSCircuitBreaker事件 › OnFallback

OnFallback 事件

在电路处于开路状态时返回备用响应之前触发;处理程序可替换有效负载。

语法

property OnFallback: TsgcCircuitBreakerOnFallback;
// TsgcCircuitBreakerOnFallback = procedure(Sender: TObject; const aKey: string; var aResponse: string) of object

默认值

备注

仅当 Fallback.Enabled 为 True 且断路器即将为被拒绝的调用提供回退响应时触发。aResponse var 参数按以下顺序预填充:键的最后一次成功响应(当 Fallback.UseLastSuccess 为 True 时),否则为 Fallback.CachedResponse,否则为 Fallback.CustomMessage。处理器可以自由修改 aResponse,例如将当前密钥注入 JSON 正文,或返回每租户的维护消息。处理器返回的字符串即为调用方最终看到的内容。在发起调用的线程上同步运行;请保持处理器快速(无网络 I/O)。未附加处理器时,预填充的 aResponse 将原样返回。

示例

procedure TForm1.CircuitFallback(Sender: TObject; const aKey: string;
  var aResponse: string);
begin
  // Inject the affected host into a JSON body so the caller knows what failed
  aResponse := Format(
    '{"error":"service unavailable","service":"%s","retry_after":30}',
    [aKey]);
end;

返回事件