Queue Workers
XetaSuite uses Laravel queues for asynchronous tasks: sending emails, generating reports, etc.
Configuration
Section titled “Configuration”Recommended driver: Redis
Section titled “Recommended driver: Redis”QUEUE_CONNECTION=redisREDIS_HOST=127.0.0.1REDIS_PORT=6379Alternative: Database
Section titled “Alternative: Database”QUEUE_CONNECTION=databaseCreate the jobs table:
php artisan queue:tablephp artisan migrateStart a worker
Section titled “Start a worker”Development
Section titled “Development”php artisan queue:workProduction
Section titled “Production”Use a process manager to keep workers running.
Create /etc/supervisor/conf.d/xetasuite-worker.conf:
[program:xetasuite-worker]process_name=%(program_name)s_%(process_num)02dcommand=php /var/www/xetasuite-core/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600autostart=trueautorestart=truestopasgroup=truekillasgroup=trueuser=www-datanumprocs=2redirect_stderr=truestdout_logfile=/var/www/xetasuite-core/storage/logs/worker.logstopwaitsecs=3600Enable:
sudo supervisorctl rereadsudo supervisorctl updatesudo supervisorctl start xetasuite-worker:*Create /etc/systemd/system/xetasuite-worker.service:
[Unit]Description=XetaSuite Queue WorkerAfter=network.target
[Service]User=www-dataGroup=www-dataRestart=alwaysExecStart=/usr/bin/php /var/www/xetasuite-core/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600StandardOutput=append:/var/www/xetasuite-core/storage/logs/worker.logStandardError=append:/var/www/xetasuite-core/storage/logs/worker-error.log
[Install]WantedBy=multi-user.targetEnable:
sudo systemctl enable xetasuite-workersudo systemctl start xetasuite-worker- Go to Servers → your server
- Click Queue in the menu
- Configure:
- Connection:
redis - Queue:
default - Processes:
2
- Connection:
- Click Create Worker
Useful commands
Section titled “Useful commands”Monitor workers
Section titled “Monitor workers”php artisan queue:monitor redis:defaultView failed jobs
Section titled “View failed jobs”php artisan queue:failedRetry failed jobs
Section titled “Retry failed jobs”# Retry allphp artisan queue:retry all
# Retry specificphp artisan queue:retry 5Clear failed jobs
Section titled “Clear failed jobs”php artisan queue:flushRestart after deployment
Section titled “Restart after deployment”php artisan queue:restartThis command signals workers to gracefully restart after finishing their current job.
Horizon (Optional)
Section titled “Horizon (Optional)”For more advanced queue management, consider using Laravel Horizon:
composer require laravel/horizonphp artisan horizon:installphp artisan migrateRun Horizon:
php artisan horizonAccess the dashboard at /horizon.