2017-07-03 8 views
1

私は、わずかな睡眠不足を認めてこれを前に説明します。Laravel Queue Worker、RabbitMQ、リモートで生成された実行中のジョブ

次のように設定がある:

APIエンドポイント(サーバーA)は、着信コールを受信し、RabbitMQのサーバー(サーバーB)上の特定のキューにこれを追加します。

RabbitMQ(サーバーB)は、単にRabbitMQキューサーバーです。それ以上のものはありません。

Laravelインストール(サーバーC)は、実際のLaravelインストールであり、特定のキュー上のジョブを探して、それらを使って作業するものです。

私たちはLaravelインストールでRabbitMQパッケージを使用しています。これは、RabbitMQ接続を介して通常のLaravel Queueの仕組みを使用できるようにします。

問題は、待ち行列のためにワーカーを生成できることですが、$jobクラスを渡すジョブは生成されないため(ジョブの内容自体はJSON配列であることが多い)、Laravelインストールでは、そのジョブで何をすべきか分かりません。

私の質問は、主にこのようなシナリオにどのようにアプローチするかを中心に展開されています。私は、LaravelのQueue-functionalityを使うことで、私が必要とすることをしないと思っています。私が行方不明のアプローチを見ることができますか?これを処理するには、フレームワーク以外のスクリプトでデーモンを生成する必要がありますか?

あなたのご意見は大変ありがとうございます。

+0

json配列を調べて、仕事が何であるかを理解する方法はありませんか、それを行うためにlaravelで準備することはできますか? –

+0

@FarrukhSubhani問題は、Laravelのキューワーカーが指定した$ジョブ(スクリプト)に基づいてジョブを実行することです。これは、$ジョブがサーバーから利用できないため、これをどのように機能させる必要があるかとは逆です仕事を始める。 – CmdrSharp

+1

これについてさらに考えてみると、Server Aも同じジョブのコピーを使用してより簡単なLaravelインストールを実行することをお勧めします。そのジョブをディスパッチできるようになり、それを実行しているサーバー上に同じコピーが存在するため、それは機能するはずです。しかし、そのアイデアのファンではありませんが、それは私のデザインを過度に複雑にしています - だから、誰かが良いアイデアを持っていれば、私はすべて耳にします! – CmdrSharp

答えて

1

解決策は、実際にジョブを発行するソリューションにジョブコードを複製することです。このコードは、ジョブが実際に機能するために必要なすべての依存関係を必要とせず、ジョブをプッシュするジョブからジョブをシリアライズするだけであるためです。

関連する問題