Redis ile beceremedim yapmayı fakat mysql üzerinde yapabildim. Takılan ve bu konuyu gören arkadaşlar olursa diye alt tarafa yaptıklarımı yazıyorum. Dökümantasyonda yazanları tek tek uyguladım. Arka plandaki çalışma mantığını henüz tam anlamış değilim fakat
config/queue.php içinde
default' => env('QUEUE_CONNECTION', 'database'),
olarak güncelledim.
Aşağıdaki şekilde queue tablolarını oluşturup migrate ettim.
php artisan queue:table
php artisan queue:failed-table
İlgili job oluşturdum
php artisan make:job SendMessageUser
Oluşturulan job içinde handle() methodunda gerçekleşecek mesaj atma işlemlerini yazdım.
İlgili controller içinde job u kuyruğa ekledim.
$sendMessage = new SendMessageUser();
$this->dispatch($sendMessage );
php artisan queue:work
artisan komutunu çalıştırınca sorunsuz şekilde çalışıyor.
Job içinde --tries=3 ile iş başına maximum çalıştırmaya deneme sayısı ve --sleep=120 ile timeout süresi tanımlanabiliyormuş.
Daha farklı özellikleri de var. supervisor ekleme olayını sunucu da denedikten sonra buraya yazarım tekrar.
Son olarak queue:work çalıştıktan sonra kodlarda değişiklik yapınca eski haline göre işlem yapıyor. php artisan queue:restart komutunu verince sorun kalmıyor. Supervisor ile ilgili başlık altında autorestart=true yazıyor. Sanırım bu otomatik olarak restart etmeye yarıyor. En azından oyle umuyorum