damianopetrungaro / circuit-breaker
用 PHP 编写的电路断路器
v1.0.1
2019-08-10 14:21 UTC
Requires
- myclabs/php-enum: ^1.7
Requires (Dev)
- behat/behat: ^3.5
- damianopetrungaro/php-commitizen: ^0.1.2
- friendsofphp/php-cs-fixer: ^2.15
- jangregor/phpstan-prophecy: ^0.4.2
- phpstan/phpstan: ^0.11.12
- phpunit/phpunit: ^8.3
This package is auto-updated.
Last update: 2024-09-11 02:26:29 UTC
README
这是一个为 PHP 应用程序提供的 电路断路器 实现。
该库通过集成测试和功能测试进行了测试,以便您对其更加放心。
稍后还将添加单元测试。
安装
php composer.phar require damianopetrungaro/circuit-breaker
它是如何工作的?
此电路断路器实现将您想要执行的功能包装在一个可调用的(一个函数或可调用的对象)中。
然后,该函数将通过不同的中间件阶段传递,这些中间件可以用来使用。
添加您自己的自定义中间件(例如延迟或甚至记录)非常简单。以重试中间件为例。
示例
这是一个使用内存适配器和重试中间件的简单示例。
<?php use DamianoPetrungaro\CircuitBreaker\DefaultCircuitBreaker; use DamianoPetrungaro\CircuitBreaker\Middleware\Base; use DamianoPetrungaro\CircuitBreaker\Middleware\Retries; use DamianoPetrungaro\CircuitBreaker\State\DetermineState; use DamianoPetrungaro\CircuitBreaker\State\Persistence\InMemory; $determineState = new DetermineState(); $resetTimeout = new DateInterval('PT10S'); $persistence = new InMemory($determineState,$maxFailure = 5,$resetTimeout); $circuitBreaker = new DefaultCircuitBreaker($persistence, new Retries($persistence, new Base())); $circuitBreaker->execute(static function (): string { // Retrieve the username from the db... // Log possible failure... return 'username'; });
您可以在 examples
目录中找到更多示例。