在我的客户端服务器中,我使用Artisan::queue
将队列发送到AWS SQS。在.env
文件中,我配置了QUEUE_DRIVER=sqs
,在config/queue.php
文件中,我配置如下。
'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',
],
现在当我从Controller调用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
在这里,我的问题是我总是在/ 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"`
我检查了对/ worker的post请求是否返回错误但是在不同的服务器中它可以正常工作(我无法检查工作层,因为我没有URL地址)。此时,工作层服务器只有
Route::match(['GET', 'POST'], 'worker', function () {
return 200;
});
在routes/web.php
中查看POST请求是否可以到达。
我做错了什么?我错过了什么?或者以错误的方式实施它?
答案 0 :(得分:0)
如果您在弹性豆茎中使用工作环境,请确保
配置 - >软件配置 - >容器选项 - >文档根
设置为值
/公共
同时检查您的路线提供商
应用程序/提供者/ RouteServiceProvider.php
检查map()函数以查看是否要创建到适当文件的http路由。可以引用多个路由文件,如web.php和api.php等