2017-06-28 77 views
0

在我的客戶端服務器中,我使用Artisan::queue向AWS SQS發送隊列。在.env文件我配置QUEUE_DRIVER=sqsconfig/queue.php文件我配置如下。如何使用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', 
    ], 

現在當我從控制器調用Artisan::queue我看到消息在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控制檯中的「飛行消息」罪名起來,當我檢查工人層的日誌文件,我看到一堆

`127.0.0.1 (-) - - [28/Jun/2017:08:37:10 +0000] "POST /worker HTTP/1.1" 404 204 "-" "aws-sqsd/2.3"` 

如果POST請求/工人我檢查返回的錯誤,但它在不同的服務器工作正常(我無法檢查工作層,因爲我沒有它的URL地址)。在這一點上,工人層服務器只有

Route::match(['GET', 'POST'], 'worker', function() { 
    return 200; 
}); 

routes/web.php,看看POST請求可以到達那裏。

我做錯了什麼?我錯過了什麼?或以錯誤的方式實施?

回答

0

如果您在彈性魔豆使用工人的環境,確保您的

配置 - >軟件配置 - >選項 - 容器>文檔根

的值設置爲

/public

另外,請檢查您的路線提供商地方,比如

應用/供應商/ RouteServiceProvider.php

有查地圖()函數來查看,如果你正在創建你的HTTP路線相應的文件。可以參考多個路由文件,如web.php和api.php等。