TsgcWSCircuitBreakerEvents › OnSlowCall

OnSlowCall 事件

当一次成功调用超过 Thresholds.SlowCallDurationMs 时触发。

语法

property OnSlowCall: TsgcCircuitBreakerOnSlowCall;
// TsgcCircuitBreakerOnSlowCall = procedure(Sender: TObject; const aKey: string; aDurationMs: Integer) of object

默认值

备注

当 Execute / ExecuteWithResult(或 HTTP API 客户端集成)完成一次耗时超过 Thresholds.SlowCallDurationMs 的成功调用时触发。aKey 参数标识断路器,aDurationMs 是以毫秒为单位的实测耗时。慢调用与成功和失败一起计入滚动窗口;当 Thresholds.SlowCallRatePercent 非零时,即使没有硬性故障,断路器也可能打开——这对应于上游降级但未完全失败的场景。使用此事件记录延迟异常值并为 p95/p99 仪表盘提供数据。当 SlowCallDurationMs 为 0 时不触发。在调用线程上同步运行。

示例

procedure TForm1.CircuitSlowCall(Sender: TObject; const aKey: string;
  aDurationMs: Integer);
begin
  Log(Format('Slow call on %s: %d ms', [aKey, aDurationMs]));
  // Feed p95/p99 histogram
  LatencyHistogram.Observe(aKey, aDurationMs);
end;

返回事件