使用 AWS Elastic Beanstalk 的 Laravel 队列

Posted

技术标签:

【中文标题】使用 AWS Elastic Beanstalk 的 Laravel 队列【英文标题】:Laravel Queue with AWS Elastic Beanstalk 【发布时间】:2020-03-03 09:50:09 【问题描述】:

在我的本地服务器中,我可以毫无问题地使用队列,只需使用: php artisan queue:work.

但在我的 AWS 服务器中,队列没有运行。

我的连接队列是database,同步邮件发送没有问题。

我检查了作业表,我可以看到我的队列,但由于未知原因它从未运行。

是否需要在 AWS Elastic Beanstalke 服务器中进行一些不同的配置?

我试过手动使用

php artisan queue:listen
php artisan queue:work

都失败了。

【问题讨论】:

他们失败的原因是什么? @mrhn 当我使用命令并且只是“冻结”我的终端并且不运行队列时。 您可以设置一个 systemd 服务来重新启动部署队列。此question 中给出的说明 @ThiagoValente:你在哪里运行了这些命令php artisan queue:work 【参考方案1】:

检查事项:

    尝试指定连接名称:php artisan queue:work database

    在这种情况下,请确保您在 EC2 上的 env 文件引用正确的默认 QUEUE_DRIVER QUEUE_DRIVER=database

    检查 config/queue.php 以获得正确的默认设置,如果您未在 env 文件default' => env('QUEUE_DRIVER', 'database') 中指定队列驱动程序@

    在您的 EC2 实例上运行 php artisan config:cache 以重新加载环境更改。

您只需要使用这两个命令之一,推荐使用php artisan queue:work 作为其缓存应用程序状态,但每次推送代码更改时运行php artisan queue:restart

建议安装配置supervisor:https://laravel.com/docs/5.8/queues#supervisor-configuration

它将负责在 EC2 重新启动或队列失败时重新启动队列工作程序

【讨论】:

你的清单对我有用。我的队列不工作只是因为我没有使用 php artisan config:cache。发出这个命令后,我的队列就像一个魅力。非常感谢

以上是关于使用 AWS Elastic Beanstalk 的 Laravel 队列的主要内容,如果未能解决你的问题,请参考以下文章

AWS Elastic Beanstalk 上禁止使用 Django 403

AWS Elastic Beanstalk

使用 AWS CodeBuild 和 EB CLI 部署到 AWS Elastic Beanstalk

Elastic Beanstalk (AWS) 的休眠配置

如何使用 Elastic beanstalk 和 Dockerrun.aws.json 正确部署到 AWS?

AWS 和 Elastic Beanstalk