TsgcWSCircuitBreaker › Events › OnCallRejected
当断路器因电路 Open 或 HalfOpen 试验配额耗尽而拒绝调用时触发此事件。
property OnCallRejected: TsgcCircuitBreakerOnCallRejected;
// TsgcCircuitBreakerOnCallRejected = procedure(Sender: TObject; const aKey, aReason: string) of object
—
每次 IsCallAllowed、Execute、ExecuteWithResult、IsConnectionAllowed 或 IsMessageAllowed 返回 False 时触发。aKey 参数标识电路(通常是上游服务的主机名或 ServerKey),aReason 是简短的人类可读字符串,例如 'Circuit Open' 或 'HalfOpen trial budget exhausted'。在事件触发之前,Metrics.TotalRejected 会递增。使用此事件记录被拒绝的流量、发出告警指标或更新 UI 中可见的降级模式指示器。在进行调用的线程上同步运行,请保持处理程序简短高效。
procedure TForm1.CircuitCallRejected(Sender: TObject;
const aKey, aReason: string);
begin
Log(Format('Rejected call for %s (%s)', [aKey, aReason]));
IncMetric('circuit.rejected.' + aKey);
end;