primitivesense/laravel-raw-sqs-connector

允许消费由 Laravel 之外的 SQS 产生的原始消息,然后在 Laravel 的队列和工作系统中原生处理

v3.0.0 2021-08-21 15:18 UTC

README

Build Status Maintainability Latest Stable Version Total Downloads License

关于

该包的目的是允许您消费由 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 仅是您自定义的消息队列,重要的是要注意 driverjob_classdriver 是此包的 raw-sqs 连接器,而 job_class 则告诉 Laravel 队列将哪个作业委托给原始消息。

然后只需调用以下内容即可启动队列

php artisan queue:work your-raw-sqs-queue

它确实提供了将多个消息推送到队列的灵活性,但它们只会由那个作业处理。

工作原理

有一个新的 RawSqsConnectorRawSqsQueueRawSqsConnector 处理构建 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 许可证发布。