oguzd Laravel Horizon kullandığınızda worker çalıştırmak için artisan queue:work
değil artisan horizon
kullanıyorsunuz.
config/horizon.php dosyasına bakarsanız orada supervisor-1 isimli bir tanımlama görürsünüz. Bu bir tane worker grubunu temsil eder. 'queue' => ['default'],
kısmında ise kuyrukları tanımlıyorsunuz. Mesela 'queue' => ['default', 'mail', 'export'],
gibi. Böyle birden fazla kuyruk tanımladığınızda Horizon'ın denge stratejileri devreye giriyor. Örneğin mail kuyruğunda işler birikti ama export boşta bekliyorsa Horizon bekleyen işleri export kuyruğuna da yayarak paralel olarak eritilmesini sağlıyor.
Siz config/horizon.php içinde ikinci bir supervisor ekleyebilirsiniz, mesela supervisor-2 ismi ile. İçinde queue olarak da sadece ['mail'] verin. balance false yapın ve maxProcesses değerini 1 tutun. Böylece işler paralel değil sırayla işlenir. Ayrıca şu kısma bakın:
https://laravel.com/docs/11.x/queues#job-middleware