プロダクションでキューを実行するには、Supervisorのようなものを使用する必要があります。これにより、バックグラウンドでプロセスを実行し、キューに入れられたジョブを処理するワーカーの数を指定し、プロセスが失敗した場合にキューを再起動できます。
使用するキューについては、それはあなた次第です。以前は、BeanstalkdをインスタンスとAmazon SQSにローカルにインストールしました。ローカルのインスタンスは、基本的な電子メール送信やその他の非同期タスクには問題ありませんでしたが、SQSは、メッセージ量が膨大で規模を拡大する必要がある場合に最適でした。 IronMQのような他のSaaS製品もありますが、スーパーバイザを使用していないため、プロダクションで問題に遭遇する一般的な理由があります。
スーパーバイザはapt-get
でインストールできます。次の設定は、開始するには良い場所です:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
numprocs=8
stdout_logfile=/home/user/app.com/worker.log
これは、次の操作を行います:
- が実行に
- キューワーカーに
php artisan queue:work
コマンド
- を一意の名前を付け、自動的にキューを開始しますワーカーがシステムを再起動してキューを自動的に再起動すると失敗する。
- 8つのプロセスにわたってキューワーカーを実行する。スーパーバイザーを開始するには
/home/user/app.com/worker.log
へ
ログイン任意の出力)、ニーズに応じて析出し、設定を再読み込みした後、次の(/再起動)を実行したい: sudo supervisorctl start laravel-worker:*
documentation Supervisorを使用してLaravelのキュープロセスを実行する方法について詳細な情報を提供します。
大きな説明。このプロジェクトは1日に5万件以上のメッセージを送信します。私はBeanstalkdを使ったことはありません。 Amazon SQSに行くべきですか? –
それはすばらしいサービスですし、アプリケーションがキューを大量に使用しているように聞こえるので、SQSを使用するとお金がかかるでしょう。状況が間違って始まると、あなたが得たメトリクスをさらに監視することは非常に貴重なものになります! – edcs
Beanstalkdを1日3M以上で使用しています。オープンソースなので、優れたメトリクスがあり、偉大な管理者パネルもあります:https://github.com/ptrofimov/beanstalk_console – Pentium10