在我的客戶端服務器中,我使用Artisan::queue
向AWS SQS發送隊列。在.env
文件我配置QUEUE_DRIVER=sqs
和config/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請求可以到達那裏。
我做錯了什麼?我錯過了什麼?或以錯誤的方式實施?