damianopetrungaro/circuit-breaker

用 PHP 编写的电路断路器

v1.0.1 2019-08-10 14:21 UTC

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 目录中找到更多示例。