TsgcWSCircuitBreaker › 事件 › 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;