Управління обмеженнями запитів API в Laravel за допомогою обмеження виконання завдань

3
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 04 лютого, 2026
У статті розглядається, як ефективно керувати обмеженнями швидкості API при використанні AWS SES для надсилання електронної пошти за допомогою Laravel. Дослідимо, як реалізувати контролювання пропускної здатності за допомогою Redis::throttle, щоб уникнути блокувань сервісу та забезпечити оптимальне використання API
```html

Коли ви працюєте з зовнішніми сервісами, такими як AWS SES для доставки електронної пошти, важливо запобігти перевантаженню API. Laravel пропонує елегантне рішення через Redis::throttle, яке допомагає ефективно управляти вашими лімітами. Давайте розглянемо, як впровадити це для оптимального використання API.

# Розуміння Redis::throttle

Метод Redis::throttle у Laravel надає потужний спосіб контролювати потік завдань у черзі. Це забезпечує дотримання лімітів API та допомагає уникнути тимчасових або постійних блокувань сервісу.

Redis::throttle('key-name')
    ->allow(10)
    ->every(5)
    ->then(function () {
        // Логіка вашої задачі тут
    });

# Практична реалізація

Створимо практичний приклад для управління швидкістю надсилання електронних листів з 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')
            ->block(2)
            ->allow(10)
            ->every(2)
            ->then(
                function () use ($job, $next) {
                    $next($job);
                },
                function () use ($job) {
                    $job->release(30);
                }
            );
    }
}

Щоб застосувати це у вашій системі сповіщень:

<?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;

    protected $content;

    public function __construct($content)
    {
        $this->content = $content;
    }

    public function via($notifiable)
    {
        return ['mail'];
    }

    public function toMail($notifiable)
    {
        return (new MailMessage)
            ->subject($this->content['subject'])
            ->line($this->content['body']);
    }

    public function middleware(): array
    {
        return [new EmailRateLimit];
    }
}

І нарешті, реалізуємо це у вашому контролері:

<?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' => 'Важливе оновлення',
            'body' => 'Ваш обліковий запис успішно оновлено.'
        ];

        $user = User::find($request->user_id);
        $user->notify(new EmailDispatch($content));

        return response()->json(['message' => 'Електронний лист поставлено у чергу для доставки']);
    }
}

Ця реалізація гарантує, що ваш додаток дотримується лімітів API, зберігаючи ефективну доставку електронних листів через AWS SES або будь-якого іншого провайдера електронної пошти

```

Популярні

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом

Logomark Logotype

Усе, що нам відомо про Livewire 4

Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу

Logomark Logotype

Створення CLI-додатка за допомогою Laravel та Docker

Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!