christoph-kluge / bref-sqs-laravel
基于 AWS Lambda 的 Laravel SQS 无服务器队列
2.0.0
2022-02-10 11:28 UTC
Requires
- bref/bref: >=1.3.0
This package is auto-updated.
Last update: 2024-09-10 17:34:46 UTC
README
你有 Laravel 队列的缩放问题吗?安装、部署,无需烦恼!
由于采用了无服务器方法,扩展软件的各个部分变得非常容易。该项目添加了原生 Laravel 队列支持。
感谢 brefphp/bref
和 serverless/serverless
,它们在这里做了大部分工作。
支持的 bref 版本
支持的 Laravel 版本
安装
要通过 Composer 安装,请使用以下命令。它将自动检测最新版本并将其绑定到 ^。
composer require christoph-kluge/bref-sqs-laravel
此包将自动在您的 Laravel 应用程序中注册 ServiceProvider。
使用说明
- 配置您的应用程序以使用 SQS 队列(请参阅官方 Laravel 文档)
- 通过 composer 安装此包
- 将示例
artisan.php
添加到项目的根目录 - 使用
artisan.php
更新您的serverless.yml
以使用新的处理器
示例 artisan.php
#!/opt/bin/php <?php declare(strict_types=1); $appRoot = getenv('LAMBDA_TASK_ROOT'); require_once $appRoot . '/vendor/autoload.php'; require_once $appRoot . '/bootstrap/app.php'; /** @var \Illuminate\Contracts\Console\Kernel $kernel */ $kernel = app(\Illuminate\Contracts\Console\Kernel::class); $kernel->bootstrap(); $status = $kernel->handle( $input = new Symfony\Component\Console\Input\StringInput(getenv('ARTISAN_COMMAND')), new Symfony\Component\Console\Output\ConsoleOutput ); $kernel->terminate($input, $status);
示例 serverless.yml
functions: queue: handler: artisan.php environment: ARTISAN_COMMAND: 'sqs:work sqs --tries=3 --sleep=1 --delay=1' layers: - ${bref:layer.php-81} events: - sqs: arn: arn:aws:sqs:region:XXXXXX:default-queue batchSize: 10 another-queue: handler: artisan.php environment: ARTISAN_COMMAND: 'sqs:work sqs --queue=another-queue --tries=3 --sleep=1 --delay=1' layers: - ${bref:layer.php-81} events: - sqs: arn: arn:aws:sqs:region:XXXXXX:another-queue batchSize: 10
待办事项
- 测试 FIFO 队列
- 部分失败不应该“重新发送”新消息,而应该删除成功的消息,如果在批次大小中至少有一个作业失败,则抛出异常
- (如果上述点能工作,则此点将过时)Dead-Letter-Queue 支持(通过读取 AWS 设置或自定义进行原生支持?)
参考资料 / 链接 / 看法
关于此主题的有用链接和看法