borisguery/transient-error-handling

Transient Error Handling

0.4 2020-09-19 07:39 UTC

This package is not auto-updated.

Last update: 2022-06-25 16:08:19 UTC


README

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

Provide a way to easily retry actions on transient errors / exceptions such as a network failure.

Install

Via Composer

$ composer require borisguery/transient-error-handling

Usage

use Bgy\TransientFaultHandling\RetryStrategies\FixedInterval;
use Bgy\TransientFaultHandling\RetryPolicy;
use Bgy\TransientFaultHandling\ErrorDetectionStrategies\TransientErrorCatchAllStrategy;

$retryCount = 10;
$retryIntervalInMicroseconds = 1000000 // 1 sec 
$retryStrategy = new FixedInterval($retryCount, $retryIntervalInMicroseconds);
$errorDetectionStrategy = new TransientErrorCatchAllStrategy(); // You may want to implement your own

$retryPolicy = new RetryPolicy($errorDetectionStrategy, $retryStrategy);
$retryPolicy->execute(function() {
    // try to connect to MySQL
    throw new ConnectionError("Unable to connect to MySQL");
});

// This configuration will try to execute 10 times the function everyseconds if an exception is thrown. 

Change log

Please see CHANGELOG for more information on what has changed recently.

Testing

$ composer test

Credits

License

The MIT License (MIT). Please see License File for more information.