- PHP 8.0 or above
- Guzzle Bundle
- Guzzle Retry middleware
Using composer:
{
"require": {
"eugenganshorn/guzzle-bundle-retry-plugin": "^1.0"
}
}
$ composer require eugenganshorn/guzzle-bundle-retry-plugin
Plugin will be activated/connected through bundle constructor in app/AppKernel.php
, like this:
Find next lines:
foreach ($contents as $class => $envs) {
if (isset($envs['all']) || isset($envs[$this->environment])) {
yield new $class();
}
}
and replace them by:
foreach ($contents as $class => $envs) {
if (isset($envs['all']) || isset($envs[$this->environment])) {
if ($class === \EightPoints\Bundle\GuzzleBundle\EightPointsGuzzleBundle::class) {
yield new $class([
new \EugenGanshorn\Bundle\GuzzleBundleRetryPlugin\GuzzleBundleRetryPlugin(),
]);
} else {
yield new $class();
}
}
}
Override the registerBundles
method in src/Kernel.php
to connect the plugin to the bundle:
public function registerBundles(): iterable
{
$contents = require $this->getBundlesPath();
foreach ($contents as $class => $envs) {
if ($envs[$this->environment] ?? $envs['all'] ?? false) {
if ($class === EightPointsGuzzleBundle::class) {
yield new $class([
new GuzzleBundleRetryPlugin(),
]);
} else {
yield new $class();
}
}
}
}
# app/config/config.yml // config/packages/eight_points_guzzle.yaml
eight_points_guzzle:
clients:
your_client:
base_url: "http://api.domain.tld"
# plugin settings
plugin:
retry:
~
See middleware options: https://github.com/caseyamcl/guzzle_retry_middleware#options
This middleware is licensed under the MIT License - see the LICENSE file for details