kirchbaum/laravel-sns-subscription-queues

本包最新版本(v1.0.0)没有提供许可证信息。

一个 Laravel 包,允许队列系统在订阅 AWS SNS 主题时处理非 Laravel 有效负载。

v1.0.0 2016-06-10 14:22 UTC

This package is auto-updated.

Last update: 2024-08-29 04:58:32 UTC


README

Build Status

Laravel SNS Subscription Queues

正在积极开发

此包目前正在积极开发中,暂时应视为实验性的。

Laravel 版本支持

由于 Laravel 版本 5.1.20 中的一些变更,此包目前仅支持 5.1.20 及以上版本。目前不支持 v5.2.0 及以上版本。

使用方法

此包扩展了默认的 Illuminate\Queue\QueueServiceProvider 来处理来自 SNS 主题订阅的队列有效负载。它通过检查作业是否满足预期的 Laravel 有效负载结构来工作。如果已配置自定义队列处理程序,则此包会添加必要的结构,以便队列系统可以处理作业。

安装

将包添加到您的项目中

现在更新您的 composer.json

    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "dev"

然后

composer require kirschbaum/laravel-sns-subscription-queues

添加以下服务提供者

// config/app.php

'providers' => [
    ...
    Kirschbaum\LaravelSnsSubscriptionQueues\ServiceProvider::class,
    ...
];

使用 Artisan 命令发布配置文件

php artisan vendor:publish --provider="Kirschbaum\LaravelSnsSubscriptionQueues\ServiceProvider"

配置看起来像这样

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Custom Handlers for SNS Subscription Queues
    |--------------------------------------------------------------------------
    |
    | Here is where we map an ARN Topic to the Laravel Job handler that should
    | process the queue payload.
    |
    */

    // Examples
    'arn:aws:sns:us-east-1:012345667910:my-sns-topic-name' => 'App\\Jobs\\MyCustomHandler@handle',
    'arn:aws:sns:us-east-1:012345667910:my-other-sns-topic-name' => 'App\\Jobs\\AnotherCustomHandler@handle',
    
];

创建相应的 Laravel 作业类来处理有效负载

<?php namespace App\Jobs;

use App\Jobs\Job;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Bus\SelfHandling;
use Illuminate\Contracts\Queue\ShouldQueue;

class MyCustomHandler extends Job implements SelfHandling, ShouldQueue
{
    use InteractsWithQueue, SerializesModels;
    
    public function handle($sqs_job, $payload)
    {

        $this->setJob($sqs_job);
        
        // Process the job here.
        
        $this->delete();

    }

}

贡献者

Nathan Kirschbaum

Alfred Nutile