ホームページ > バックエンド開発 > PHPチュートリアル > Laravel'の列挙統合を備えたクリーナーキューチェーン

Laravel'の列挙統合を備えたクリーナーキューチェーン

Johnathan Smith
リリース: 2025-03-10 11:53:11
オリジナル
831 人が閲覧しました

Cleaner Queue Chains with Laravel's Enum Integration

Laravelは、バスファサードの

方法で直接フォールバック値を持つ酵素の使用をサポートし、列挙のonQueue属性に手動でアクセスすることなくサポートするようになりました。この改善により、ジョブチェーンやキューを処理する際に、よりクリーンで表現力のあるコードが作成されます。 value

この強化は、優先度、リソースの要件、またはビジネスロジックに基づいて異なるキューに向けられる必要がある複雑なジョブパイプラインを構築する場合に特に役立ちます。

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, '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();
        }
    }
}
ログイン後にコピー

以上がLaravel&#039;の列挙統合を備えたクリーナーキューチェーンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート