graze / transient-fault-handler
重试因临时故障而失败的作业
0.3.1
2020-07-04 22:16 UTC
Requires
- php: >=5.5.0
- psr/log: ^1.0.2
Requires (Dev)
- graze/standards: ^1.0
- mockery/mockery: ^0.9
- phpunit/phpunit: ^4.8.35
- squizlabs/php_codesniffer: ~2.7.1
This package is auto-updated.
Last update: 2024-09-05 08:03:19 UTC
README
重试因临时错误而失败的作业。非常适合网络请求,但可以重试任何可调用对象。
安装
通过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)。有关更多信息,请参阅许可文件。