edriving-limited / dynamic-sqs
为 Laravel 添加对自定义 SQS 负载的支持
2.3.0
2024-03-27 06:54 UTC
Requires
- php: ^7.3|^7.4|^8.0|^8.1|^8.2|^8.3
- aws/aws-sdk-php: ^3.269
- illuminate/contracts: ^5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- nunomaduro/larastan: ^1.0
- orchestra/testbench: ^5.0|^6.0|^7.0|^8.0
- phpunit/phpunit: ^9.6
- squizlabs/php_codesniffer: *
This package is auto-updated.
Last update: 2024-09-26 02:48:40 UTC
README
此包为您标准 Laravel 作业添加了对自定义 SQS 负载的支持。
安装
首先使用 composer 安装包 composer require edriving-limited/dynamic-sqs
。然后使用 php artisan vendor:publish
发布配置文件。
您还需要将您的 SQS 连接的 driver
更新为 dynamic-sqs
。
设置
首先,您应该创建您的作业类,与您创建标准 Laravel 作业的方式完全相同。然后,我们需要创建一个 "处理器" 类,这个类负责从您的 SQS 消息中提取负载并返回您的作业类的一个实例。
这个类应该实现 JobHandlerContract
并定义一个 handle
方法,该方法返回一个作业实例。
use App\Jobs\SendWelcomeEmail; use eDriving\DynamicSqs\JobHandlerContract; use Illuminate\Contracts\Queue\ShouldQueue; class SendWelcomeEmailHandler implements JobHandlerContract { public function handle(array $payload): ShouldQueue { return SendWelcomeEmail($payload['data']['userId']); } }
处理器类设置完成后,我们需要定义如何将任何给定的 SQS 消息映射到特定的处理器。为此,打开您新发布的 config/dynamic-sqs.php
配置文件。在这里,我们需要定义两个属性,discoverer
和 map
。
Discoverer
这个属性应该引用一个类,该类负责接收一个给定的负载并返回 "处理器 ID"。这个 ID 是负载中的一个值,将用于确定使用哪个处理器处理此消息。已经为您设置了一个示例,它从负载中返回 "处理器" 值。您可以创建自己的类版本以适应您的消息。
[ 'discoverer' => [\eDriving\DynamicSqs\Commands\DiscovererHandler::class, 'discover'], ]
Map
最后,我们需要将处理器 ID 映射到其处理器类。您可以通过在 map
属性中填充键 => 值对来完成此操作。键是处理器 ID,映射是处理器类的类字符串。
[ 'map' => [ 'sendWelcomeEmail' => SendWelcomeEmailHandler::class ] ]