2017 © Pedro Peláez
 

library laravel-sqs-sns

A simple Laravel service provider which adds a new queue connector to handle SNS subscription queues.

image

zackyjack/laravel-sqs-sns

A simple Laravel service provider which adds a new queue connector to handle SNS subscription queues.

  • Tuesday, March 13, 2018
  • by zackyjack
  • Repository
  • 1 Watchers
  • 0 Stars
  • 60 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 3 Forks
  • 0 Open issues
  • 7 Versions
  • 13 % Grown

The README.md

AWS SQS SNS Subscription Queue

A simple extension to the Illuminate/Queue queue system used in Laravel and Lumen., (*1)

Using this connector allows SQS messages originating from a SNS subscription to be worked on with Illuminate\Queue\Jobs\SqsJob., (*2)

This is especially useful in a miroservice architecture where multiple services subscribe to a common topic with their queues., (*3)

Understand that this package will not handle publishing to SNS, please use the AWS SDK to publish an event to SNS., (*4)

Requirements

  • Laravel (tested with version 5.3)
  • or Lumen (tested with version 5.3)

Usage

Add the LaravelSqsSnsSubscriptionQueue ServiceProvider to your application., (*5)

Laravel

Registering Service Providers in Laravel, (*6)

'providers' => [
    // ...
    Joblocal\LaravelSqsSnsSubscriptionQueue\SqsSnsServiceProvider::class,
],

Lumen

Registering Service Providers in Lumen, (*7)

$app->register(Joblocal\LaravelSqsSnsSubscriptionQueue\SqsSnsServiceProvider::class);

Configuration

You'll need to configure the queue connection in your config/queue.php, (*8)

'connections' => [
  'sqs-sns' => [
    'driver' => 'sqs-sns',
    'key'    => env('AWS_ACCESS_KEY', 'your-public-key'),
    'secret' => env('AWS_SECRET_ACCESS_KEY', 'your-secret-key'),
    'queue'  => env('QUEUE_URL', 'your-queue-url'),
    'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
    'routes' => [
        // you can use the "Subject" field
        'Subject' => 'App\\Jobs\\YourJob',
        // or the "TopicArn" of your SQS message
        'TopicArn:123' => 'App\\Jobs\\YourJob',
        // to specify which job class should handle the job
    ],
  ],
],

Once the sqs-sns queue connector is configured you can start using it by setting queue driver to 'sqs-sns' in your .env file., (*9)

Job class example

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

/**
 * Example Job class
 */
class Job implements ShouldQueue
{
  use InteractsWithQueue, Queueable, SerializesModels;

  /**
   * @param string  $subject   SNS Subject
   * @param array   $payload   JSON decoded 'Message'
   */
  public function __construct(string $subject, array $payload)
  {
  }
}

Message transformation

When SNS publishes to SQS queues the received message signature is as follows:, (*10)

{
  "Type" : "Notification",
  "MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76",
  "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
  "Subject" : "Testing publish to subscribed queues",
  "Message" : "Hello world!",
  "Timestamp" : "2017-03-29T05:12:16.901Z",
  "SignatureVersion" : "1",
  "Signature" : "...",
  "SigningCertURL" : "...",
  "UnsubscribeURL" : "..."
} 

Illuminate\Queue\Jobs\SqsJob requires the following signature:, (*11)

{
  "job": "Illuminate\\Queue\\CallQueuedHandler@call",
  "data": {
    "commandName": "App\\Jobs\\YourJob",
    "command": "...",
  }
}

Installation

The best way to install laravel-sqs-sns-subscription is by using Composer., (*12)

To install the most recent version:, (*13)

php composer.phar require joblocal/laravel-sqs-sns-subscription-queue

The Versions

13/03 2018

dev-master

9999999-dev

A simple Laravel service provider which adds a new queue connector to handle SNS subscription queues.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Julius Liebert
by Johannes Hofmann
by Zackky Muhammad

laravel lumen aws queue sns sqs sns subscription

13/03 2018

v2.2.1

2.2.1.0

A simple Laravel service provider which adds a new queue connector to handle SNS subscription queues.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Julius Liebert
by Johannes Hofmann
by Zackky Muhammad

laravel lumen aws queue sns sqs sns subscription

24/01 2018

v2.2

2.2.0.0

A simple Laravel service provider which adds a new queue connector to handle SNS subscription queues.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Julius Liebert
by Johannes Hofmann

laravel lumen aws queue sns sqs sns subscription

24/01 2018

dev-feature-variable-route-key

dev-feature-variable-route-key

A simple Laravel service provider which adds a new queue connector to handle SNS subscription queues.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Julius Liebert
by Johannes Hofmann

laravel lumen aws queue sns sqs sns subscription

11/10 2017

v2.1

2.1.0.0

A simple Laravel service provider which adds a new queue connector to handle SNS subscription queues.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Julius Liebert
by Johannes Hofmann

laravel lumen aws queue sns sqs sns subscription

20/06 2017

v2.0

2.0.0.0

A simple Laravel service provider which adds a new queue connector to handle SNS subscription queues.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Julius Liebert
by Johannes Hofmann

laravel lumen aws queue sns sqs sns subscription

29/08 2016

v1.0

1.0.0.0

A simple Laravel service provider which adds a new queue connector to handle SNS subscription queues.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Julius Liebert
by Johannes Hofmann

laravel lumen aws queue sns sqs sns subscription