クライアントサーバーでは、Artisan::queue
を使用してAWS SQSにキューを送信します。 .env
ファイルでは、QUEUE_DRIVER=sqs
とconfig/queue.php
ファイルに以下のように設定しました。私はコントローラーからArtisan::queue
を呼び出すときlaravelを使用してaws SQSからキューを取得する方法は?
'default' => env('QUEUE_DRIVER', 'sqs'),
'sqs' => [
'driver' => 'sqs',
'key' => 'MY_AWS_KEY',
'secret' => 'MY_AWS_SECRET',
'prefix' => 'https://sqs.us-west-2.amazonaws.com/1234567890',
'queue' => 'queue-name',
'region' => 'us-west-2',
],
は今、私は、メッセージがSQSで作成されて参照してください。私はAWSコンソールでそれらを見ることができ、以下のようになります。
{"job":"Illuminate\\Foundation\\Console\\QueuedJob",
"data":[{"some_data_key":"some_data_value"}]}
これまでのところ、すべてがうまくいきます。しかし、私の作業層はデータを受け取ることはありません。私は>労働者層>の構成に以下のような労働者の詳細を設定している:
Worker queue: queue-name
Worker queue URL: https://sqs.us-west-2.amazonaws.com/1234567890/queue-name
HTTP path: /worker
ここで、私の問題は、私は常に/ワーカーアドレスに404エラーを取得するということです。すぐにメッセージが送信されたとして、私は、AWS SQSコンソールで、「飛行中のメッセージ」で1つのカウントアップを見ると、私は労働者階層のログファイルをチェックするとき、私は/労働者へのPOSTリクエスト場合、私がチェック
`127.0.0.1 (-) - - [28/Jun/2017:08:37:10 +0000] "POST /worker HTTP/1.1" 404 204 "-" "aws-sqsd/2.3"`
の束を見ますエラーが返されましたが、別のサーバーで正常に動作します(URLアドレスがないため、ワーカー層でチェックできませんでした)。この時点で、労働者層サーバーがPOST要求が達することができるかどうかを確認するためにroutes/web.php
にのみ
Route::match(['GET', 'POST'], 'worker', function() {
return 200;
});
を持っています。
どうしたのですか?私は何か見落としてますか?それとも間違った方法で実装しますか?