2016-06-25 3 views
1

Laravelアプリケーションのログ記録に取り組んでいます。amdは後で検索するためにSQSにデータを送信する予定でした。しかし、プロダクションサーバーからAWSキューにジョブをディスパッチしたいのですが、キューをリッスンする別のログサーバー上でキューを操作してください。Laravel - 1つのサーバーでジョブが処理され、別のサーバーで処理される

私はキューを聴くようにキューワーカーを設定する方法を理解していますが、Laravelのジョブは自己処理です。したがって、LoggingサーバーのワーカーがSQSからメッセージを取得すると、同じ名前空間(同じClass名を持つ)のジョブを探して処理します。これを別の方法で処理する方法はありますか、単にプロダクション・サーバー上のジョブ・ディスパッチャーと同じ、ジョブ・ハンドラーにロギング・サーバーの名前を付けるだけです。

答えて

1

特定のサーバーごとに異なるキューを作成し、実行する必要のある場所に応じて各ジョブを送信することができます。

基本的に、これは特定のキュー上のジョブをプッシュする方法です:

$job = (new SendReminderEmail($user))->onQueue('emails'); 

そしてここでは、特定のキューからジョブを処理するためのコマンドです:

php artisan queue:listen --queue=emails 

は、それが

を役に立てば幸い
+0

ええ、私はその部分を理解しています。それは不思議に思っているロギングサーバー上での仕事の処理です。私のプロダクションコードに 'SendReminderEmail'というジョブがあった場合、私のロギングサーバー(キューを実行している)には' SendReminderEmail'というジョブが必要になり、暗黙的に処理されるようになります。それは正確ですか? – djt

+0

基本的に、laravelは、キュープロバイダにプッシュする前にJobオブジェクトをシリアル化し、もう一方の端で、シリアル化されたデータとクラス定義を使用して元のオブジェクトを再作成します。だから両方のサーバーで全く同じクラスを持つ必要があります。 – Atrakeur

+0

を参照してください。それは残念です。人々はこれをどのように扱いますか?私は、ロギングサーバ上でプロダクションレポ全体を複製することは望ましくありません。なぜなら、膨大な膨大な量の膨大なものになるからです。 – djt

関連する問題