Skip to content

Queue Workers

XetaSuite utilise les queues Laravel pour les tâches asynchrones : envoi d’emails, génération de rapports, etc.

Terminal window
QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
Terminal window
QUEUE_CONNECTION=database

Créer la table de jobs :

Terminal window
php artisan queue:table
php artisan migrate
Terminal window
php artisan queue:work

Utilisez un process manager pour maintenir les workers actifs.

Créez /etc/supervisor/conf.d/xetasuite-worker.conf :

[program:xetasuite-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/xetasuite-core/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/xetasuite-core/storage/logs/worker.log
stopwaitsecs=3600

Activer :

Terminal window
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start xetasuite-worker:*
Terminal window
php artisan queue:monitor redis:default
Terminal window
php artisan queue:failed
Terminal window
# Retenter tous
php artisan queue:retry all
# Retenter un spécifique
php artisan queue:retry 5
Terminal window
php artisan queue:flush
Terminal window
php artisan queue:restart

Cette commande signale aux workers de redémarrer gracieusement après avoir terminé leur job en cours.

Pour une gestion plus avancée des queues, envisagez d’utiliser Laravel Horizon :

Terminal window
composer require laravel/horizon
php artisan horizon:install
php artisan migrate

Lancer Horizon :

Terminal window
php artisan horizon

Accédez au dashboard à /horizon.