2017-06-28 28 views
0

クライアントサーバーでは、Artisan::queueを使用してAWS SQSにキューを送信します。 .envファイルでは、QUEUE_DRIVER=sqsconfig/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; 
}); 

を持っています。

どうしたのですか?私は何か見落としてますか?それとも間違った方法で実装しますか?

答えて

0

あなたはElastic Beanstalkでのあなたの労働者の環境を使用している場合は、確認してくださいあなたの

設定 - >ソフトウェア設定 - >コンテナOption->ドキュメントルート

の値に設定されている

/public

はまたどこか

アプリ/プロバイダ/ RouteServiceProvider.php

よう

をあなたのルートプロバイダーをチェックし、あなたが適切なファイルへのあなたのhttpルートを作成しているかどうかを確認するためにマップ()関数がチェックします。 web.phpやapi.phpなどの複数のルートファイルへの参照があります

関連する問題