10-Apr-2023
.
Admin
Hi Guys,
In this tutorial, I am going to learn you how to use the circuit breaker pattern in laravel 9 application. We will show the circuit breaker pattern in laravel 9 app. I will teach you the use of circuit breaker pattern in laravel 9.
The circuit breaker is a design pattern used in modern software development. It is used to detect failures and encapsulates the logic of preventing a failure from constantly recurring, during maintenance, temporary external system failure or unexpected system difficulties.
Download Laravel
Let us begin the tutorial by installing a new laravel application. if you have already created the project, then skip following step.
composer create-project laravel/laravel example-app
Without using Circuit Breaker
<?php
use Illuminate\Support\Facades\Http;
/**
* Write code on Method
*
* @return response()
*/
public function index()
{
$response = Http::timeout(5)->get('https://jsonplaceholder.typicode.com/users');
$content = json_decode($response->body());
dd($content);
}
The timeout(5) means, the HTTP client will stop requesting the API after 5 seconds and will throw an exception.
Now it is okay but still not preventing our service to make a request to the API. So, the solution is:
Using Circuit Breaker
<?php
use Illuminate\Cache\RateLimiter;
use Illuminate\Support\Facades\Http;
/**
* Write code on Method
*
* @return response()
*/
public function index()
{
$limiter = app(RateLimiter::class);
$actionKey = 'service_name';
$threshold = 5;
try {
if ($limiter->tooManyAttempts($actionKey, $threshold)) {
// Exceeded the maximum number of failed attempts.
return $this->failOrFallback();
}
$response = Http::timeout(2)->get('https://jsonplaceholder.typicode.com/users');
$content = json_decode($response->body());
dd($content);
} catch (\Exception $exception) {
$limiter->hit($actionKey, \Carbon\Carbon::now()->addMinutes(10));
return $this->failOrFallback();
}
}
It will help you...
#Laravel 9