/athenaeum-circuits

[READ ONLY] Athenaeum Circuits package - see https://github.com/aedart/athenaeum

Primary LanguagePHPBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Athenaeum Circuits

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

Example

<?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...
        });
    }
}

Documentation

Please read the official documentation for additional information.

Repository

The mono repository is located at github.com/aedart/athenaeum

Versioning

This package follows Semantic Versioning 2.0.0

License

BSD-3-Clause, Read the LICENSE file included in this package