繁体   English   中英

如何使用Laravel从AWS SQS检索队列?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM