Heim > Backend-Entwicklung > PHP-Tutorial > Cleaner -Warteschlangenketten mit Laravels Enum -Integration

Cleaner -Warteschlangenketten mit Laravels Enum -Integration

Johnathan Smith
Freigeben: 2025-03-10 11:53:11
Original
827 Leute haben es durchsucht

Cleaner Queue Chains with Laravel's Enum Integration

laravel unterstützt nun die Verwendung von Enums mit Fallback -Werten direkt in der onQueue -Methode der Busfassade, ohne manuell auf das value -Merkmal der Aufzählung zugreifen zu können. Diese Verbesserung schafft sauberer und ausdrucksstärkerer Code bei der Behandlung von Jobketten und Warteschlangen.

Diese Verbesserung ist besonders nützlich, wenn sie komplexe Jobpipelines erstellen, die auf verschiedene Warteschlangen angewiesen werden müssen, die auf Priorität, Ressourcenanforderungen oder Geschäftslogik basieren.

use App\Enums\QueueType;

// 直接使用枚举,无需 ->value
Bus::chain($jobs)
    ->onQueue(QueueType::Background)
    ->dispatch();
Nach dem Login kopieren

Folgendes ist ein tatsächliches Beispiel für die Implementierung eines Dokumentverarbeitungssystems:

<?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, 'Document processing complete')
        ])
        ->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();
        }
    }
}
Nach dem Login kopieren

Diese Verbesserung vereinfacht die Warteschlange implementiert, während die Sicherheitstypsicherheit beibehält und die Code -Lesbarkeit verbessert wird.

Das obige ist der detaillierte Inhalt vonCleaner -Warteschlangenketten mit Laravels Enum -Integration. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage