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);

См. также