graze/transient-fault-handler

重试因临时故障而失败的作业

0.3.1 2020-07-04 22:16 UTC

This package is auto-updated.

Last update: 2024-09-05 08:03:19 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

重试因临时错误而失败的作业。非常适合网络请求,但可以重试任何可调用对象。

安装

通过Composer

composer require graze/transient-fault-handler

使用方法

临时故障处理器接受两种检测策略和一种重试策略。可以使用构建器快速创建处理器。

$task = function () {
    // Task that is prone to transient errors
};

$builder = new TransientFaultHandlerBuilder();
$transientFaultHandler = $builder->build();

$result = $transientFaultHandler->execute($task);

检测策略

当尝试执行一个任务时,它将返回某个值或抛出异常。

检测策略将决定该值/异常是否表示临时错误。

如果是,则故障处理器将被告知重试任务。如果不是,则值/异常要么表示成功,要么表示非临时错误,重试无法解决。

在这种情况下,将值返回给调用者或重新抛出异常。

  • FalseyReturnValueDetectionStrategy:将评估为假的返回值视为临时错误。
  • StaticDetectionStrategy:返回在构建策略时设置的静态值,无论返回值或异常如何。

重试策略

如果检测策略决定应重试任务,则重试策略将决定在重试之前等待多长时间(退避期),并可选择对任务设置最大重试次数。

  • ExponentialBackoffStrategy:退避期随机选择为零和一个指数增长的值之间。

构建器

构建器通过自动注入依赖项使创建故障处理器变得更容易。可以通过使用设置器覆盖构建器使用的默认策略。

$builder = new TransientFaultHandlerBuilder();
$transientFaultHandler = $builder
    ->setExceptionDetectionStrategy(new StaticDetectionStrategy())
    ->setReturnValueDetectionStrategy(new FalseyReturnValueDetectionStrategy())
    ->setRetryStrategy(new ExponentialBackoffStrategy())
    ->setLogger(new Logger())
    ->build();

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

测试

make test

贡献

有关详细信息,请参阅CONTRIBUTING

安全性

如果您发现任何与安全相关的问题,请通过电子邮件security@graze.com联系,而不是使用问题跟踪器。

致谢

许可协议

MIT许可(MIT)。有关更多信息,请参阅许可文件