Laravel Tinker’da Job Dispatch Etmek veya Laravel Tinker Neden Job’ları Dispatch Etmiyor?

Emre Deligöz
2 min readAug 26, 2022

--

Bu makale ben (Yunus Emre Deligöz) ve Turan Karatuğ tarafından yazılmıştır. İngilizce dilinde ve ayrıca blogum üzerinde okunabilir.

Uzun Lafın Kısası

Dispatch komutundan hemen sonra, sadece, ;1 eklemeniz yeterli.

SendEmailJob::dispatch();1;

Laravel Tinker üzerinden Job’ları Dispatch Etmek

Laravel Artisan Tinker üzerinde kuyruğa bir Job göndermek istiyorsanız, Tinker’ı açıp şöyle yazarsınız:

SendEmailJob::dispatch();

Ve Job’un aslında kuyruğa gönderilmediğini farkedersiniz. Komutu yeniden çalıştırırsanız aynı yanıtı görürsünüz ancak Job kuyruğa yalnızca bir kez gönderilmiştir.

Laravel Tinker Job’u Neden İlk Seferde Dispatch Etmedi?

Buradaki sorun Laravel Tinker’in oluşturulan PendingDispatch nesnelerini kullanıcının sonraki komutlarda kullanması için bellekte tutmasıdır. PendingDispatch nesnesi yok edildiğinde Job dispatch edilir.

Bu konudaki tartışmalar için Laravel Tinker Repo’suna göz atabilirsiniz.

Çözüm

Bu problemi en doğru şekilde çözmek için Job’u Laravel’in Dispatcher sınıfı üzerinden gönderebilirsiniz:

app(\Illuminate\Contracts\Bus\Dispatcher::class)->dispatch(new SendEmailJob());

Hızlıca çözmek içinse:

SendEmailJob::dispatch();1

Komutun sonuna ;1 eklediğinizde, Tinker PendingDispatch nesnelerini bellekte tutmayacak ve bu da Job'ların hemen dispatch edilmesini sağlayacaktır.

--

--

Emre Deligöz
Emre Deligöz

No responses yet