gilbitron / sqsd
AWS Elastic Beanstalk 工作节点 SQS 守护进程(sqsd)的 PHP 复制品
Requires
- aws/aws-sdk-php: ^3.26
- mtdowling/cron-expression: ^1.2
- symfony/console: ^3.2
- symfony/yaml: ^3.2
- vlucas/phpdotenv: ^2.4
README
在测试一个在 AWS Elastic Beanstalk 上运行的 Laravel 应用时,我遇到了一个问题,我想要测试我的应用如何与本地机器上的工作节点 SQS 守护进程(sqsd)交互。由于 sqsd 不是开源的,目前没有官方的测试方法。
该项目(受到其他项目的启发)试图通过 PHP 复制 sqsd 的功能,用于本地测试。请注意,此库没有依赖 Laravel,可以用于测试任何类型的应用。
描述
Laravel 队列工作进程通过轮询队列以查找作业并直接运行它们(因为队列工作进程是应用程序的一部分)来操作。由于 sqsd 完全独立于任何应用程序,它以不同的方式工作,以便任何应用程序都可以与之配合工作。
Sqsd 通过轮询 SQS 队列中的作业并将它们通过 POST 发送到您在 Elastic Beanstalk 工作节点环境设置 中指定的端点(默认为 http://localhost/
)。如果作业由于任何原因失败,则作业将被发送到所谓的 死信队列 以进行人工处理。
sqsd 的另一个方面是它可以读取应用程序根目录中的 cron.yaml
文件,该文件指定了可以在计划上运行的 周期性任务。Sqsd 会在计划触发时将作业发送到队列。然后,这些作业将以正常方式由 sqsd 处理,但将以一些额外的头信息通过 POST 发送到 cron.yaml
中指定的路径。
要求
- PHP >= 5.5.0
- Composer
安装 & 使用
- 克隆此仓库
- 将
.env.example
复制到.env
并填写详细信息(见下文) - 运行
composer install
- 运行
php ./bin/sqsd.phar work
作为 composer 依赖项安装
- 运行
composer require gilbitron/sqsd
- 运行
php ./vendor/bin/sqsd.phar work
注意:如果您将 sqsd
作为 composer 依赖项运行,您需要通过命令行设置环境变量(更多信息请参阅下文)。
配置
配置是通过在运行 sqsd
之前设置环境变量(例如,export SQS_QUEUE_URL=https://sqs.us-east-1.amazonaws.com/123456789
)或在 .env
中指定它们来完成的。
带有 * 标记的环境变量是 sqsd 运行所必需的。
构建 Phar 文件
要构建 Phar 文件,首先需要 安装 Box,然后运行
box build -v
Laravel 小贴士
如果您正在寻找一个可以使Laravel与sqsd
一起工作的软件包,我推荐dusterio/laravel-aws-worker。
如果您正在用此来测试Laravel应用程序,而不是配置Supervisor以运行aritsan queue:work
命令,请配置Supervisor以运行sqsd work
命令。
贡献
所以您想帮忙?太棒了。以下是您可以这样做的方式
如果您正在提交一个pull请求,请遵守代码中使用的现有编码标准,并且每个pull请求只提交1个功能/修复。包含多个更改的pull请求将被拒绝。
鸣谢
Sqsd是由来自Gilbert Pellegrom的Dev7studios创建的。在MIT许可下发布。