This package offers a Circuit Breaker that can be used to "[...] detect failures and encapsulates the logic of preventing a failure from constantly recurring, during maintenance, temporary external system failure or unexpected system difficulties[...]" (wiki).
A detailed explanation of how the Circuit Breaker Pattern works, can be found on Medium and Martin Fowler's blog
<?php
use Aedart\Circuits\Traits\CircuitBreakerManagerTrait;
class WeatherService
{
use CircuitBreakerManagerTrait;
public function forecast()
{
$circuitBreaker = $this->getCircuitBreakerManager()
->create('weather_service');
return $circuitBreaker->attempt(function() {
// Perform 3rd party API call... not shown here
}, function(){
// Service has failed and is unavailable, do something else...
});
}
}
Please read the official documentation for additional information.
The mono repository is located at github.com/aedart/athenaeum
This package follows Semantic Versioning 2.0.0
BSD-3-Clause, Read the LICENSE file included in this package