AWS Elastic Beanstalk 工作节点 SQS 守护进程(sqsd)的 PHP 复制品

0.1.4 2017-05-03 15:36 UTC

This package is auto-updated.

Last update: 2024-09-12 04:36:11 UTC


README

在测试一个在 AWS Elastic Beanstalk 上运行的 Laravel 应用时,我遇到了一个问题,我想要测试我的应用如何与本地机器上的工作节点 SQS 守护进程(sqsd)交互。由于 sqsd 不是开源的,目前没有官方的测试方法。

该项目(受到其他项目的启发)试图通过 PHP 复制 sqsd 的功能,用于本地测试。请注意,此库没有依赖 Laravel,可以用于测试任何类型的应用。

描述

Sqsd architecture

Laravel 队列工作进程通过轮询队列以查找作业并直接运行它们(因为队列工作进程是应用程序的一部分)来操作。由于 sqsd 完全独立于任何应用程序,它以不同的方式工作,以便任何应用程序都可以与之配合工作。

Sqsd 通过轮询 SQS 队列中的作业并将它们通过 POST 发送到您在 Elastic Beanstalk 工作节点环境设置 中指定的端点(默认为 http://localhost/)。如果作业由于任何原因失败,则作业将被发送到所谓的 死信队列 以进行人工处理。

sqsd 的另一个方面是它可以读取应用程序根目录中的 cron.yaml 文件,该文件指定了可以在计划上运行的 周期性任务。Sqsd 会在计划触发时将作业发送到队列。然后,这些作业将以正常方式由 sqsd 处理,但将以一些额外的头信息通过 POST 发送到 cron.yaml 中指定的路径。

要求

  • PHP >= 5.5.0
  • Composer

安装 & 使用

  1. 克隆此仓库
  2. .env.example 复制到 .env 并填写详细信息(见下文)
  3. 运行 composer install
  4. 运行 php ./bin/sqsd.phar work

作为 composer 依赖项安装

  1. 运行 composer require gilbitron/sqsd
  2. 运行 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 PellegromDev7studios创建的。在MIT许可下发布。