acdphp/laravel-sns-sqs-queue

使用 AWS SNS 和 SQS 扩散 Laravel 队列作业,以实现微服务之间的通信。

v1.0.0 2023-12-26 19:33 UTC

This package is auto-updated.

Last update: 2024-09-26 21:16:01 UTC


README

Latest Stable Version

使用 AWS SNS 和 SQS 扩散 Laravel 队列作业,以实现微服务之间的通信。

workflow

安装

  1. 安装包

    composer require acdphp/laravel-sns-sqs-queue
  2. 在您的 config/queue.php 中添加新的队列连接。 (类似于默认的 sqs 连接,但增加了 endpointsns_topic_arn

    'connections' => [
       ...
       'sns-sqs' => [
          'driver' => 'sns-sqs',
          'key' => env('AWS_ACCESS_KEY_ID'),
          'secret' => env('AWS_SECRET_ACCESS_KEY'),
          'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
          'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
          'queue' => env('SQS_QUEUE', 'default'),
          'suffix' => env('SQS_SUFFIX'),
          'after_commit' => false,
          'endpoint' => env('AWS_ENDPOINT'),
          'sns_topic_arn' => env('SNS_TOPIC_ARN', 'arn:aws:sns:us-east-1:your-account-id:topic'),
      ],
    ]
  3. 用法

    1. 全局设置您的 QUEUE_CONNECTIONsns-sqs
    2. 或作业特定(建议仅用于微服务消息作业)
      class MicroserviceMessageJob implements ShouldQueue
      {
          use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
      
          public function __construct($yourData, $anotherData)
          {
              $this->onConnection('sns-sqs');
          }

注意

  • 扇出作业必须存在于所有应使用相同命名空间和构造函数参数处理消息的应用程序中,以便正常工作。
  • 发布到 SNS 使用 HTTP/S 协议,这是同步的。这意味着您的作业调度将暂停处理,直到 SNS 响应。考虑使用更好的技术,例如使用 AMQP(如这个 ),以获得更好的性能。

许可

MIT 许可证 (MIT)。请参阅 许可文件 以获取更多信息。