[英]How to retrieve queue from aws SQS using laravel?
在客户端服务器中,我使用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控制台的“正在运行的消息”中看到一个计数,当我检查Worker层的日志文件时,看到一堆
`127.0.0.1 (-) - - [28/Jun/2017:08:37:10 +0000] "POST /worker HTTP/1.1" 404 204 "-" "aws-sqsd/2.3"`
我检查了对/ worker的发布请求是否返回了错误,但在其他服务器上也可以正常工作(由于没有URL地址,因此无法检入worker层)。 此时,Worker层服务器仅具有
Route::match(['GET', 'POST'], 'worker', function () {
return 200;
});
在routes/web.php
中查看POST请求是否可以到达那里。
我做错了什么? 我错过了什么? 还是以错误的方式实施?
如果您在弹性beantalk中使用您的工作环境,请确保您的
配置->软件配置->容器选项->文档根
设置为值
/上市
还要检查您的路线提供商
应用程序/提供者/ RouteServiceProvider.php
那里检查map()函数来查看您是否正在创建到适当文件的http路由。 可以引用多个路由文件,例如web.php和api.php等
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.