TsgcWSCircuitBreaker事件 › OnStateChange

OnStateChange 事件

当回路在 Closed、Open 和 HalfOpen 之间转换时触发。

语法

property OnStateChange: TsgcCircuitBreakerOnStateChange;
// TsgcCircuitBreakerOnStateChange = procedure(Sender: TObject; const aKey: string; aOldState, aNewState: TsgcCircuitState) of object

默认值

备注

在每次成功的状态转换后触发,包括操作员驱动的 ForceOpen / ForceClose / Reset 以及阈值驱动的 Closed -> Open / Open -> HalfOpen / HalfOpen -> Closed 或 HalfOpen -> Open。aKey 参数标识熔断器(通常为主机名),aOldState / aNewStateTsgcCircuitState 值——csClosedcsOpencsHalfOpen。使用此事件进行结构化日志记录、告警(PagerDuty、Slack、Teams)以及绘制每台主机熔断器状态的实时仪表板。在触发转换的线程上同步运行;请保持处理程序快速且非阻塞,将繁重工作委派给工作线程。

示例

procedure TForm1.CircuitStateChange(Sender: TObject; const aKey: string;
  aOldState, aNewState: TsgcCircuitState);
const
  cStateName: array [TsgcCircuitState] of string =
    ('Closed', 'Open', 'HalfOpen');
begin
  Log(Format('Circuit %s: %s -> %s',
    [aKey, cStateName[aOldState], cStateName[aNewState]]));
  if aNewState = csOpen then
    NotifyPagerDuty('Circuit open for ' + aKey);
end;

返回事件