Úvod
Laravel 12.35 přidává nový ovladač fronty s názvem deferred, určené ke zpracování úloh ve frontě po odpověď HTTP je odeslána zpět klientovi, a to vše v rámci stejného procesu PHP.
Na rozdíl od typických ovladačů fronty (database, redis, sqs, atd.), které se spoléhají na externí pracovníky. řidič s odloženou platností umožňuje odložit nekritické úlohy, jako je odesílání e-mailů, protokolování nebo analýza, až do dokončení požadavku.
Jak funguje ovladač odložené fronty
Zde se dozvíte, co se děje pod kapotou při použití funkce deferred ovladač fronty:
- Úlohu normálně odešlete pomocí
dispatch(). - Jakmile je uživateli odeslána odpověď HTTP, Laravel automaticky zpracuje odložené úlohy. synchronně v rámci téhož procesu PHP po odeslání odpovědi uživateli.
Konfigurace
Chcete-li použít ovladač odložené fronty, přidejte nové připojení do svého config/queue.php soubor:
'connections' => [ 'deferred' => [ 'driver' => 'deferred', ],],
Nastavte ji globálně ve svém .env:
QUEUE_CONNECTION=deferred
V kódu pak můžete:
SendWelcomeEmail::dispatch($user);
Kombinace odloženého přístupu s ovladačem fronty při selhání
Můžete kombinovat řidič s odloženou platností s funkcí Laravel ovladač fronty s podporou převzetí služeb při selhání aby byla zajištěna maximální spolehlivost.
V tomto nastavení se Laravel nejprve pokusí odeslat úlohy do vašeho hlavního systému. databáze fronta. Pokud se to nepodaří (například z důvodu dočasného problému s připojením), bude se vrátit se k odloženému ovladači, což zajistí, že úloha bude spuštěna ihned po odeslání odpovědi HTTP.
Zde je návod, jak ji nakonfigurovat v aplikaci config/queue.php:
'connections' => [ 'failover' => [ 'driver' => 'failover', 'connections' => ['database', 'deferred'], ],],
Pak ve svém .env soubor:
QUEUE_CONNECTION=failover
Nyní při odesílání úlohy:
SendWelcomeEmail::dispatch($user);
Tady je průběh:
- Laravel se pokusí odeslat úlohu do serveru databáze nejprve ve frontě.
- Pokud připojení k databázové frontě selže, Laravel automaticky se vrátí k odloženému ovladači.
- Odložený ovladač zajistí, že úloha bude spuštěna ihned po odeslání odpovědi uživateli, což zabrání ztrátě úlohy i v případě, že je hlavní fronta nefunkční.
Tato hybridní konfigurace poskytuje jak spolehlivost a rychlost:
- Úlohy jsou obvykle zpracovávány primárním systémem fronty (např. databázovými pracovníky).
- Pokud není k dispozici, provedou se okamžitě po odpovědi díky funkci odloženého zpětného přístupu.
Kdy použít ovladač odložené fronty
Na stránkách ovladač odložené fronty je ideální pro:
- Odesílání transakčních e-mailů ihned po požadavku.
- Zaznamenávání analytických údajů nebo metrik po odpovědi.
- Vysílání událostí nebo oznámení, které nemají vliv na bezprostřední uživatelské prostředí.
- Jakákoli krátká nekritická úloha, která by měla být spuštěna po odezvě, ale nepotřebuje vyhrazeného pracovníka.
Vyhněte se mu však pro:
- Dlouhotrvající nebo na prostředky náročné úlohy.
- Úlohy, které vyžadují logiku opakování nebo distribuované zpracování (použití
redis,sqs, nebodatabasemísto toho).
Souhrn
Na stránkách Ovladač odložené fronty zavedené v Laravel 12.35 poskytuje jednoduchý, ale výkonný způsob spouštění úloh ve frontě. po odpověď HTTP je odeslána bez dalších nastavení nebo pracovníků.
Ve spojení s Ovladač fronty s podporou převzetí služeb při selhání, vytváří bezpečný a efektivní hybridní přístup: okamžité provedení po odpovědi se spolehlivou záložní ochranou.