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();
}
}
}
Цей функціонал спрощує реалізацію черг, зберігаючи при цьому типову безпеку та підвищуючи читабельність коду
Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!
Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!
Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку