3

私はLaravel キューを使用しており、 IronMQを使用しています。しかし、私はこのプロセスについて少し混乱しています。

デフォルトの接続をqueue.php as 'default' => 'iron'設定し、アイロンの設定も同じファイルに設定しました。

今私は使用します

 $this->dispatch(new createEvents($data, $user));

クラスは Laravel チュートリアルで説明されているcreateEventsように作成されたジョブクラスです。次のコードが実行されると

$this->dispatch(new createEvents($data, $user));

プロジェクトの下の IronmQ アカウントにキューが正常に作成されます。

ここで私の混乱が始まります。そのキューにいくつかのタスクをキューに入れましたが、そのキューをどのように実行しますか? キューに入れられたタスクを実行するにはどうすればよいですか? 追加のコードを作成する必要がありますか、それとも設定を行う必要がありますか。ガイドしてください

4

3 に答える 3

3

サーバーに移動してこのコマンドを手動で実行する必要はありません。実行を継続し、それらのジョブを実行するプロセスが必要です。

「supervisord」をお勧めし ます http://supervisord.org/

このプログラムは、スクリプトを起動して実行し続けるためのものであり、失敗しても再起動します(もちろん、ある程度の失敗まで)

インストールしたら、おそらく次のスーパーバイザー タスク ファイルを作成する必要があります。

[program:queue]
command=php artisan queue:listen --tries=3 --env=your_environment
directory=/path/to/laravel
stdout_logfile=/path/to/laravel/app/storage/logs/supervisord.log
redirect_stderr=true
autostart=true
autorestart=true
于 2016-01-07T09:36:33.373 に答える
1

php artisan queue:listenリストされたすべてのキューを開始するか、キュー名を指定すると実行できますphp artisan queue:listen queue_name

実行することを忘れないでくださいphp artisan queue:failed-table。これによりfailed_jobs、データベースにテーブルが作成されます。

そのため、キューの実行時に何か問題が発生した場合、失敗したキューがデータベースに保存されます。

失敗したキューにデータベースを挿入させたい場合は、リッスンを実行するときにこれを追加します。

php artisan queue:listen connection-name --tries=3

失敗したキューを実行するphp artisan queue:retry all

ご質問にお答えします。

于 2015-12-31T09:22:57.270 に答える
0

ジョブがキューに入ったら、質問によると、次の 2 つの簡単なオプションがあります。

  1. 同じ/異なるサーバーで 1 つ以上のキュー リスナーを実行します (Laravel ドキュメントではスーパーバイザーの使用が推奨されています。サンプル構成を参照してください) 。

  2. キュー ワーカーを手動または自動で定期的に実行する (crontab)

    php 職人キュー:作業鉄

このコマンドは、キューから 1 つのジョブを取得して処理します。もう一度起動すると、もう 1 つフェッチされます。

追加の処理を行わず、キュー ドライバーが「同期」されていない場合、ジョブは日の目を見ることはありません。

私のアドバイス – 開発/テスト マシンでキュー ワーカーを手動で起動し、運用サーバーでスーパーバイザーを使用します。

プロジェクトが小さく、大きなスケーラビリティを必要としない場合は、単純に「同期」ドライバーに切り替えることができます (ジョブはすぐに処理されます)。本当に必要でない限り、インフラストラクチャをより複雑にする必要はありません。

于 2016-01-10T03:56:32.363 に答える