Pool::setCircuitBreakerStrategy
(PHP 8.6+, True Async 1.0)
public Pool::setCircuitBreakerStrategy(?CircuitBreakerStrategy $strategy): void
Устанавливает стратегию Circuit Breaker для пула. Circuit Breaker контролирует
доступность внешнего сервиса: при обнаружении множественных сбоев пул
автоматически переходит в состояние INACTIVE, предотвращая лавину ошибок.
При восстановлении сервиса пул возвращается в активное состояние.
Параметры
- strategy
- Объект стратегии
CircuitBreakerStrategy, определяющий правила перехода между состояниями.null— отключить Circuit Breaker.
Возвращаемые значения
Функция не возвращает значения.
Примеры
Пример #1 Установка стратегии
<?php
use Async\Pool;
use Async\CircuitBreakerStrategy;
$pool = new Pool(
factory: fn() => new HttpClient('https://api.example.com'),
destructor: fn(HttpClient $c) => $c->close(),
max: 10
);
$strategy = new CircuitBreakerStrategy(
failureThreshold: 5, // после 5 ошибок — деактивация
recoveryTimeout: 30000, // через 30 секунд — попытка восстановления
successThreshold: 3 // 3 успешных запроса — полная активация
);
$pool->setCircuitBreakerStrategy($strategy);
Пример #2 Отключение Circuit Breaker
<?php
use Async\Pool;
// Отключить стратегию
$pool->setCircuitBreakerStrategy(null);
См. также
- Pool::getState — Текущее состояние Circuit Breaker
- Pool::activate — Принудительная активация
- Pool::deactivate — Принудительная деактивация
- Pool::recover — Перевод в режим восстановления