primitivesense / laravel-raw-sqs-connector
允许消费由 Laravel 之外的 SQS 产生的原始消息,然后在 Laravel 的队列和工作系统中原生处理
Requires
- php: >=7.3
- ext-json: *
- aws/aws-sdk-php: ~3.1
- illuminate/queue: ^8.0
Requires (Dev)
- mockery/mockery: ^1.2
- phpstan/phpstan: ^0.12
- phpstan/phpstan-mockery: ^0.12.0
- phpunit/phpunit: ^8.0
- squizlabs/php_codesniffer: ^3.4
This package is auto-updated.
Last update: 2024-09-19 23:45:40 UTC
README
关于
该包的目的是允许您消费由 AWS SQS 产生的 Laravel 之外的原始消息,然后在 Laravel 的队列和工作系统中原生处理。
- 原生集成到 Laravel 的队列系统中,利用所有现有功能。
- 它扩展了 Laravel SQS 的基本功能,仅覆盖了一小部分 SQS 方法。
- 已在生产中使用。
- 全面文档。
- 完整的单元测试套件。
该库最初是为了允许将作业从 AWS Lambda 提交到 Laravel 而构建的。
依赖关系
- PHP >= 7.3
- Laravel >= 8.0
通过 Composer 安装
要安装
composer require primitivesense/laravel-raw-sqs-connector
如何使用
将服务提供者添加到 config/app.php
,如下所示
'providers' => [
'...',
'\PrimitiveSense\LaravelRawSqsConnector\RawSqsServiceProvider'
];
创建一个新作业,如下所示
<?php
namespace App\Jobs;
use PrimitiveSense\LaravelRawSqsConnector\RawSqsJob;
class ExampleRawSqsJob extends RawSqsJob
{
public function handle()
{
$yourRawMessage = $this->data;
}
}
RawSqsJob
是一个基类,它具有所有必要的特性,以允许 Laravel 的队列系统正确处理它。
您可以通过 $this->data
访问来自 SQS 的原始消息,神奇!
然后,在 config/queue.php
中添加以下块来配置此内容
'your-raw-sqs-queue' => [
'driver' => 'raw-sqs',
'job_class' => \App\Jobs\ExampleRawSqsJob::class,
'key' => env('SQS_KEY', 'your-public-key'),
'secret' => env('SQS_SECRET', 'your-secret-key'),
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => env('SQS_QUEUE', 'your-queue-name'),
'region' => env('SQS_REGION', 'us-east-1'),
],
your-raw-sqs-queue
仅是您自定义的消息队列,重要的是要注意 driver
和 job_class
。 driver
是此包的 raw-sqs
连接器,而 job_class
则告诉 Laravel 队列将哪个作业委托给原始消息。
然后只需调用以下内容即可启动队列
php artisan queue:work your-raw-sqs-queue
它确实提供了将多个消息推送到队列的灵活性,但它们只会由那个作业处理。
工作原理
有一个新的 RawSqsConnector
和 RawSqsQueue
。RawSqsConnector
处理构建 RawSqsQueue
类,该类的职责是处理/提交消息到 SQS。然后有一个基 RawSqsJob
类,可以从中扩展,它具有队列系统所需的全部特性,以正确委托和处理作业。
RawSqsQueue
扩展了 Laravel 的 SQS 队列,覆盖了一些核心方法,禁用了 push
方法,因为该包旨在从 SQS 消费作业,而不是将作业推送到队列。大部分工作都位于覆盖的 pop
方法中,该方法处理传入的消息。该方法已扩展以接收消息并将其编排成 Laravel 队列系统理解的形式,以便稍后由作业本身处理。
帮助!
如果您有任何问题,请随时提出问题!
贡献
我们非常欢迎贡献,请随时提出 PR,但请确保
- 符合 PSR-2 -
./vendor/bin/phpcs --standard=PSR2
- 符合 PHPStan 配置的包 -
./vendor/bin/phpstan analyse -l max -c phpstan.neon src
许可证
Laravel Raw SQS Connector 是开源软件,使用 MIT 许可证发布。