Чистіші черги з використанням Enum у Laravel

Перекладено ШІ 0 Laravel News 17 березня, 2025

Laravel тепер підтримує безпосереднє використання задніх enum з методом onQueue фасаду Bus, що спрощує код при роботі з чергами. Дізнайтеся, як це вдосконалення може підвищити ефективність вашої системи обробки документів і зробити код більш зрозумілим!

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

Особливо ця можливість корисна при створенні складних пайплайнів завдань, які можуть бути спрямовані в різні черги залежно від пріоритету, ресурсних вимог або бізнес-логіки.

use App\Enums\QueueType;
 
// Використовуйте енум без ->value
Bus::chain($jobs)
    ->onQueue(QueueType::Background)
    ->dispatch();

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

<?php
 
namespace App\Enums;
 
enum ProcessingQueue: string
{
    case Immediate = 'realtime';
    case Standard = 'default';
    case Batch = 'batch-process';
    case LowPriority = 'low-priority';
}
 
namespace App\Services;
 
use App\Enums\ProcessingQueue;
use App\Jobs\ProcessDocument;
use App\Jobs\GenerateThumbnail;
use App\Jobs\ExtractMetadata;
use App\Jobs\NotifyUser;
use App\Models\Document;
use Illuminate\Support\Facades\Bus;
 
class DocumentProcessor
{
    public function process(Document $document, bool $isPriority = false)
    {
        $queue = $isPriority
            ? ProcessingQueue::Immediate
            : ProcessingQueue::Standard;
 
        Bus::chain([
            new ProcessDocument($document),
            new ExtractMetadata($document),
            new GenerateThumbnail($document),
            new NotifyUser($document->user, 'Документ оброблено')
        ])
        ->onQueue($queue)
        ->dispatch();
 
        return $document;
    }
 
    public function batchProcess(array $documentIds)
    {
        foreach ($documentIds as $id) {
            $document = Document::find($id);
 
            Bus::chain([
                new ProcessDocument($document),
                new GenerateThumbnail($document)
            ])
            ->onQueue(ProcessingQueue::Batch)
            ->dispatch();
        }
    }
}

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

Популярні

Інше, що варто прочитати

13 Оновлено 01 червня, 2026

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

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

15 Оновлено 01 червня, 2026

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

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

37 Оновлено 01 червня, 2026

4 поширені помилки Vite у Laravel

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