Laravel Circuit Breaker Pattern Example
https://www.itsolutionstuff.com/post/laravel-circuit-breaker-pattern-exampleexample.html
Laravel Circuit Breaker Pattern Example
<?php namespace App\Http\Controllers; use Illuminate\Http\Request;use Illuminate\Support\Facades\Http; class APIController extends Controller{ /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function index() { $response = Http::get('https://myapp.app/api/admins'); $content = json_decode($response->body()); dd($content); }}<?php namespace App\Http\Controllers; use Illuminate\Http\Request;use Illuminate\Support\Facades\Http; class APIController extends Controller{ /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function index() { $response = Http::timeout(10)->get('https://myapp.app/api/admins'); $content = json_decode($response->body()); dd($content); }}<?php namespace App\Http\Controllers; use Illuminate\Http\Request;use Illuminate\Support\Facades\Http;use Illuminate\Cache\RateLimiter;use Exception; class APIController extends Controller{ /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function index() { $limiter = app(RateLimiter::class); $actionKey = 'service_name'; $threshold = 5; try { if ($limiter->tooManyAttempts($actionKey, $threshold)) { return $this->failOrFallback(); } $response = Http::timeout(3)->get('https://myapp.app/api/admins'); $content = json_decode($response->body()); dd($content); } catch (Exception $exception) { $limiter->hit($actionKey, Carbon::now()->addMinutes(15)); return $this->failOrFallback(); } }}Last updated