mtahv3/laravel-queue-snssqs

提供从扇出 SNS/SQS 模式处理 Laravel 队列的能力

安装次数: 1,633

依赖者: 0

推荐者: 0

安全性: 0

星标: 4

关注者: 2

分支: 2

开放问题: 1

类型:laravel-package

8.0.0 2020-10-11 14:46 UTC

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 主题名称映射到作业。

注意:如果要在主题名称中忽略后缀或前缀,您可以在主题名称中使用通配符 (*)。例如,如果您将 prodtest 前缀添加到您的主题名称中,您可以使用单个通配符路由来映射 prod 和 test。

默认情况下,如果配置文件中没有设置路由,驱动程序将尝试将 TopicName 映射到 App\Jobs 中的相同类名。例如,一个名为 UserCreated 的 TopicName 将尝试映射到 App\Jobs\UserCreated::class,如果没有在 routes 数组中添加条目。