TsgcWSCircuitBreaker › 方法 › RecordSuccess
记录一次成功调用;当试验调用成功时,将状态从 HalfOpen 推进为 Closed。
procedure RecordSuccess(const aKey: string);
| 名称 | 类型 | 描述 |
|---|---|---|
aKey | const string | 成功所属的电路键,通常是上游服务的主机名。 |
更新滚动窗口计数器,递增 Metrics.TotalSuccesses 和 Metrics.TotalCalls,并评估状态转换机。在 HalfOpen 状态下,每次记录成功都会减少剩余的试验预算;当预算归零时,断路器从 HalfOpen 转换为 Closed 并触发 OnStateChange。仅当您自行管理调用(而非通过 Execute)时,才需要显式调用 RecordSuccess;HTTP API 客户端集成已在每个 2xx 响应时自动记录成功。
// Manual accounting after a custom REST call
try
vResponse := MyHTTPClient.Get(vURL);
sgcWSCircuitBreaker1.RecordSuccess(vHost);
except
on E: Exception do
sgcWSCircuitBreaker1.RecordFailure(vHost, E.Message);
end;
procedure RecordSuccess;
针对 DefaultKey 记录一次成功的快捷方式。当单个断路器保护恰好一个逻辑依赖项,且每次调用传递密钥没有附加价值时使用。在调用之前将 DefaultKey 设置为有意义的标签(例如 'payment-gateway'),以使 Metrics 和 OnStateChange 具有可读性。
sgcWSCircuitBreaker1.DefaultKey := 'payment-gateway';
try
ChargeCustomer;
sgcWSCircuitBreaker1.RecordSuccess;
except
on E: Exception do
sgcWSCircuitBreaker1.RecordFailure(E.Message);
end;