mtahv3 / laravel-queue-snssqs
提供从扇出 SNS/SQS 模式处理 Laravel 队列的能力
Requires
- aws/aws-sdk-php: ~3.0
- illuminate/database: 8.*
- illuminate/queue: 8.*
- illuminate/support: 8.*
This package is auto-updated.
Last update: 2024-09-11 23:36:15 UTC
README
在使用 SNS 和 SQS 的扇出模式时,默认的 Laravel 队列系统会失败,因为它期望从 Laravel 自身序列化的队列中接收到的结构化消息。
此队列驱动程序将允许您从 SNS 订阅接收到的 SQS 队列中获取原始 JSON 数据,并将其映射到 Laravel 中的正确作业处理器。
安装
您可以通过以下命令使用 Composer 安装此包
composer require mtahv3/laravel-queue-snssqs
服务提供者
服务提供者应该通过 composer 钩子自动与 Laravel 注册 信息。
如果这导致问题,并且您想手动通过将以下行添加到您的 config/app.php
文件中的 providers
数组中来手动注册服务提供者。
Mtahv3\LaravelQueueSnsSqs\LaravelQueueSnsSqsServiceProvider::class
配置
要配置驱动程序,您需要将以下元素添加到 config/queue.php
文件中的 connections
数组中
'snssqs' => [ 'driver' => 'snssqs', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'prefix' => env('AWS_SQS_QUEUE_PREFIX'), 'queue' => env('AWS_SQS_QUEUE_NAME'), 'region' => env('AWS_REGION'), 'routes'=> [ '*TopicName'=>'App\\Jobs\\JobName', 'AnotherName*'=>'App\\Jobs\\AnotherJob' ] ]
路由
队列中的消息通过其 SNS 主题名称进行映射。您需要修改之前添加的数组的 routes
元素,将 SNS 主题名称映射到作业。
注意:如果要在主题名称中忽略后缀或前缀,您可以在主题名称中使用通配符 (*)。例如,如果您将 prod
和 test
前缀添加到您的主题名称中,您可以使用单个通配符路由来映射 prod 和 test。
默认情况下,如果配置文件中没有设置路由,驱动程序将尝试将 TopicName 映射到 App\Jobs 中的相同类名。例如,一个名为 UserCreated 的 TopicName 将尝试映射到 App\Jobs\UserCreated::class,如果没有在 routes
数组中添加条目。