TsgcWSCircuitBreakerEvents › OnStateChange

OnStateChange Event

Fired when a circuit transitions between Closed, Open and HalfOpen.

Syntax

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

Default Value

Remarks

Fires after every successful state transition, including operator-driven ForceOpen / ForceClose / Reset and threshold-driven Closed -> Open / Open -> HalfOpen / HalfOpen -> Closed or HalfOpen -> Open. The aKey parameter identifies the circuit (typically a hostname), and aOldState / aNewState are TsgcCircuitState values — csClosed, csOpen or csHalfOpen. Use this event for structured logging, alerting (PagerDuty, Slack, Teams), and real-time dashboards that paint per-host breaker status. Runs synchronously on the thread that triggered the transition; keep the handler fast and non-blocking — delegate heavy work to a worker thread.

Example

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;

Back to Events