Heim >Backend-Entwicklung >PHP-Tutorial >Verwalten von API -Ratenlimits in Laravel durch Job -Drosselung
effizientes Verwalten von API -Ratengrenzen ist entscheidend für die Integration in externe Dienste wie AWS SES für die E -Mail -Zustellung. Laravel bietet eine optimierte Lösung unter Verwendung von Redis::throttle
, um den Fluss von Arbeitsplätzen in der Warteschlange zu steuern und API -Überschwemmungen und potenzielle Servicestörungen zu verhindern. Lassen Sie uns eine praktische Implementierung untersuchen.
Nutzung Redis::throttle
Laravels Redis::throttle
bietet einen robusten Mechanismus für die Regulierung der Arbeitsplatzausführung in die Warteschlange. Dies gewährleistet die Einhaltung von API -Ratengrenzen und vermeidet vorübergehende oder dauerhafte Serviceblöcke. Die Grundstruktur lautet wie folgt:
Redis::throttle('key-name') ->allow(10) // Allow 10 requests ->every(5) // Within a 5-second window ->then(function () { // Your job logic here });
Praktisches Beispiel: AWS SES -E -Mail -Zustellung
Erstellen wir ein Middleware -System zum Verwalten von E -Mails mit AWS SES:
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Redis; class EmailRateLimit { public function handle($job, Closure $next) { Redis::throttle('email-throttle') ->allow(10) ->every(2) ->block(2) // Wait 2 seconds if throttled ->then(function () use ($job, $next) { $next($job); }, function () use ($job) { $job->release(30); // Release after 30 seconds }); } }
Diese Middleware wird auf unser E -Mail -Benachrichtigungssystem angewendet:
<?php namespace App\Notifications; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Notification; use Illuminate\Notifications\Messages\MailMessage; use App\Http\Middleware\EmailRateLimit; class EmailDispatch extends Notification implements ShouldQueue { use Queueable; public $content; public function __construct($content) { $this->content = $content; } // ... (rest of the Notification class remains the same) ... public function middleware(): array { return [new EmailRateLimit]; } }
schließlich in einen Controller integrieren:
<?php namespace App\Http\Controllers; use App\Models\User; use App\Notifications\EmailDispatch; use Illuminate\Http\Request; class MailController extends Controller { public function dispatch(Request $request) { $content = [ 'subject' => 'Important Update', 'body' => 'Your account has been updated successfully.' ]; $user = User::find($request->user_id); $user->notify(new EmailDispatch($content)); return response()->json(['message' => 'Email queued for delivery']); } }
Dieser umfassende Ansatz stellt sicher, dass Ihre Bewerbung die API -Ratenlimits respektiert und gleichzeitig die effiziente E -Mail -Zustellung über AWS -SES oder einen kompatiblen E -Mail -Service -Anbieter beibehält. Die Verwendung von Middleware trennt die preislimitierende Logik sauber von Ihrem Kernanwendungscode.
Das obige ist der detaillierte Inhalt vonVerwalten von API -Ratenlimits in Laravel durch Job -Drosselung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!