Покращення керування чергами за допомогою події JobQueueing у Laravel

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 16 квітня, 2025
Відкрийте для себе новий рівень управління чергами в Laravel з допомогою події JobQueueing, яка дозволяє контролювати завдання перед їх відправленням у чергу. Не пропустіть можливість дізнатися, як впровадження цієї функціональності може суттєво покращити моніторинг та управління вашими завданнями

Система черг Laravel стала ще потужнішою завдяки новій події JobQueueing. Цей хук для попереднього відправлення відкриває нові можливості для моніторингу та управління завданнями ще до того, як вони потраплять до вашої черги.

Подієва архітектура системи черг Laravel вже має кілька хуків життєвого циклу, таких як JobProcessing та JobProcessed. Подія JobQueueing розширює ці можливості, дозволяючи отримати доступ до ранньої стадії — саме тоді, коли завдання готуються до відправлення постачальнику черги.

Ось простий приклад реалізації цієї нової події:

use Illuminate\Queue\Events\JobQueueing;
use Illuminate\Support\Facades\Event;

// Реєструємо обробник для події JobQueueing
Event::listen(function (JobQueueing $event) {
    // Отримуємо інформацію про чергове завдання
    $job = $event->job;
    $connectionName = $event->connectionName;
    $payload = $event->payload;

    // Виконуємо попередню логіку черги
});

Ця функція відкриває безліч практичних застосувань для управління та моніторингу черг. Наприклад, ви можете впровадити логування черг, орієнтоване на середовище:

<?php

namespace App\Providers;

use Illuminate\Queue\Events\JobQueueing;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Log;

class AppServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        // Створюємо локальний логгер для завдань
        Event::listen(function (JobQueueing $event) {
            if (app()->environment('local')) {
                Log::info('Queueing job', [
                    'job' => get_class($event->job),
                    'connection' => $event->connectionName,
                    'queue' => $event->payload['queue'] ?? 'default'
                ]);
            }
        });
    }
}

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

Популярні

Logomark Logotype

Простий пакет RabbitMQ для Laravel

Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!

Logomark Logotype

Інтеграція Laravel Socialite з бібліотекою Google Client PHP

Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті

Logomark Logotype

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!