coverzen / configurable-sqs
利用laravel queue:work命令监听Amazon SQS消息的包,支持可配置模式
v1.1.1
2024-09-24 13:11 UTC
Requires
- php: ^8.2
- aws/aws-sdk-php: ^3.304
- illuminate/contracts: ^10.0
- illuminate/queue: ^10.0
- illuminate/support: ^10.0
Requires (Dev)
- fakerphp/faker: ^1.23
- friendsofphp/php-cs-fixer: ^3.53
- mockery/mockery: ^1.6
- nunomaduro/phpinsights: ^2.11
- orchestra/testbench: ^8.22
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpmd/phpmd: ^2.15
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.10
- phpstan/phpstan-mockery: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- povils/phpmnd: ^3.4
- squizlabs/php_codesniffer: ^3.9
- timacdonald/log-fake: ^2.2
This package is auto-updated.
Last update: 2024-09-24 13:12:03 UTC
README
此包提供了一个简单的订阅AWS SQS队列的方法。该包设计得尽可能简单易用,只需要简单的配置即可将任何消息重定向到特定的监听器。
安装
composer require coverzen/configurable-sqs
配置
首先,您需要将以下环境变量添加到您的.env
文件中
AWS_ACCESS_KEY_ID=your-key AWS_SECRET_ACCESS_KEY=your-secret AWS_DEFAULT_REGION=your-region AWS_ACCOUNT_ID=your-account-id
然后,您需要将以下配置添加到您的config/queue.php
文件中
'connections' => [ ... 'configurable-sqs' => [ 'driver' => 'configurable-sqs', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'prefix' => 'https://sqs.'.env('AWS_DEFAULT_REGION').'.amazonaws.com/'.env('AWS_ACCOUNT_ID').'/', 'queue' => 'your-queue-name', 'suffix' => '', 'region' => env('AWS_DEFAULT_REGION'), 'has_consumer' => true, ], ]
使用方法
要将自定义监听器订阅到队列,您需要创建一个新的监听器类并在configurable-sqs.php
文件中进行配置。
'your-queue-name' => [ [ 'type' => ConfigurableJob::TYPE_SQS_SIMPLE_PAYLOAD, 'search' => [ 'key' => 'message', 'value' => 'test', ], 'listener' => YourListener::class, ], [ 'type' => ConfigurableJob::TYPE_SQS_REGEX_PAYLOAD, 'search' => [ 'key' => 'message', 'value' => '/^test$/i', ], 'listener' => YourListener::class, ], [ 'type' => ConfigurableJob::TYPE_SNS_FROM, 'arn' => 'arn:aws:sns:eu-south-1:0000000000:HelloWorld', 'listener' => YourListener::class, ], ],
type
键可以取以下值之一
ConfigurableJob::TYPE_SQS_SIMPLE_PAYLOAD
:此类型将在SQS消息中搜索特定的键和值。ConfigurableJob::TYPE_SQS_REGEX_PAYLOAD
:此类型将使用正则表达式模式在SQS消息中搜索特定的键和值。ConfigurableJob::TYPE_SNS_FROM
:此类型将在SQS消息中搜索特定的SNS ARN。
监听器类可以实现Coverzen\ConfigurableSqs\Interfaces\ListenerInterface
接口。
namespace App\Listeners; YourListener implements ListenerInterface { public function handle(array $message): void { // Your logic here } }
简单的SQS消息作业
ExampleSimpleSQSJob.php
use Coverzen\ConfigurableSqs\Job\SimpleSQSJob; class ExampleSimpleSQSJob extends SimpleSQSJob { protected string $event = 'example'; public function __construct($data) { parent::__construct($data); } }
EventTrigger.php
use App\Jobs\ExampleSimpleSQSJob; class EventTrigger { public function trigger() { ExampleSimpleSQSJob::dispatch([ 'message' => 'test', ]); } }
当EventTrigger::trigger()
类执行时,ExampleSimpleSQSJob
将通过sqs-configurable驱动程序以简单的消息负载形式派发到队列。
{ "event": "example", "data": { "message": "test" } }
仅发送队列配置
如果您只想发送队列配置,则需要将has_consumer配置选项设置为false。
'connections' => [ ... 'configurable-sqs-send-only' => [ 'driver' => 'configurable-sqs', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'prefix' => 'https://sqs.'.env('AWS_DEFAULT_REGION').'.amazonaws.com/'.env('AWS_ACCOUNT_ID').'/', 'queue' => 'your-queue-name', 'suffix' => '', 'region' => env('AWS_DEFAULT_REGION'), 'has_consumer' => false, ], ]
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。