aedart/athenaeum-circuits

适用于Laravel的断路器


README

此包提供了一个断路器,可用于“[...] 检测故障并封装防止故障不断重复的逻辑,在维护期间、临时外部系统故障或意外系统困难时[...]” (wiki).

关于断路器模式如何工作的详细解释,可以在 MediumMartin Fowler的博客 上找到

示例

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

文档

请阅读官方文档以获取更多信息。

仓库

单仓库位于 github.com/aedart/athenaeum

版本控制

此包遵循 语义版本控制 2.0.0

许可证

BSD-3-Clause,请阅读包含在此包中的LICENSE文件