2017-07-29 12 views
1

プライベートAPIのルーメン設定があります。 Laravelは内部的にLumenにAPIリクエストを行い、Lumenはジョブ(Amazon SQS)をキューに入れます。LumenからQueue経由でLaravelに連絡しますか?

キュージョブが完了したか失敗した場合、どのようにLaravelに返答しますか?キューワーカーが何らかの理由でLaravelアプリに通信できない場合は、後で何らかの形で再度試してみる必要があります。

システムアーキテクチャ図が添付されています。私の質問はあなたが見ることができる赤い点線です。まず、新しいジョブを作成

enter image description here

答えて

1

はあなたが必要とするすべてのPARAMATERS(ジョブID、タスクID、ユーザーIDなど)を備えたNotifyLaravelと呼ばれます。

キュー内のジョブが完了すると、作業が完了した直後にdispatch(new NotifyLaravel($jobId))とすることができます。

このジョブの仕事は、キューがこの特定のジョブの実行を終了したことを示すために単にLaravelにpingを送信することです。私は実装の例を挙げませんが、基本的には、LumenとLaravelの間の共有秘密を作成して、要求を「認証」することができます。ルーメンは、単にあなたがそれらを追跡するために使用するジョブIDまたは識別子を送信します。

Laravelインスタンスがオフラインの場合は、単に例外をスローすることができます。キューワーカーは後で再試行します。後者はドキュメント(https://laravel.com/docs/5.4/queues#job-expirations-and-timeouts)で説明されています。

+0

@Feilx答えてくれてありがとう、私はそれについて考えました。 pusher.comの使用についてどう思いますか? –

+1

@ I'll-Be-Backプッシャードットコムは、チャンネル、WebSocket、iOSプッシュ機能、Googleプッシュ機能を使用してクライアントにリアルタイムで通知するために使用されます。現在のユースケースを意味するものではありません。あなたができる最も最適なことは私の答えで書いたものです。Lumen APIがLaravelのプライベートエンドポイントにJSONペイロードを送信します。 –

+1

また指定するだけです。作成しているジョブ( 'NotifyLaravel')はルーメン側に作成されます –

関連する問題