TsgcWSCircuitBreaker › 方法 › SaveStateToFile
将所有已跟踪断路器的状态和计数器持久化到文件中,以便在重启后恢复。
procedure SaveStateToFile(const aFileName: string);
| 名称 | 类型 | 描述 |
|---|---|---|
aFileName | const string | 要写入的文件的绝对或相对路径。文件将被覆盖;父目录必须已存在。 |
将每个密钥的当前状态、滚动窗口计数器和上次状态变更时间戳序列化到单个文件中,以便进程重启后可以恢复热断路器状态。相对于并发的 RecordSuccess / RecordFailure 调用,写入操作是原子的,内部临界区对访问进行序列化。可从 TTimer(例如每 60 秒)定期调用,也可在优雅关闭时调用。在启动时使用 LoadStateFromFile 进行恢复。配置(Thresholds、Recovery、Fallback、Classification、PerEndpoint)不会被持久化,只有运行时状态会被保存。操作系统引发的任何 I/O 错误都会传播给调用方。
// Periodically snapshot state so a crash does not lose Open circuits
procedure TForm1.PersistTimer(Sender: TObject);
begin
sgcWSCircuitBreaker1.SaveStateToFile('circuit.dat');
end;
// Also on graceful shutdown
procedure TForm1.FormDestroy(Sender: TObject);
begin
sgcWSCircuitBreaker1.SaveStateToFile('circuit.dat');
end;