AWS SQS Wrapper: Publish and subscribe message queues using AWS SQS

Recommend this page to a friend!
  Info   Documentation   View files (35)   Download .zip   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not yet rated by the usersTotal: 54 All time: 9,803 This week: 318
Version License PHP version Categories
aws-sqs-wrapper 1.0BSD License5PHP 5, Utilities and Tools, Web services
Description Author

This package can publish and subscribe message queues using AWS SQS.

It provides simple means to publish and subscribe to message questions using Amazon Simple Queue System using a queue connection object that takes as parameter an object of the AWS SQS client.

Innovation Award
PHP Programming Innovation award nominee
November 2018
Number 9
Amazon Simple Queue System (AWS SQS) is a very popular format passing messages to queues of jobs to be processed by separate systems.

The AWS SQS SDK code is a bit complicated. This package provides a simpler solution around AWS SQS SDK that uses separate objects for connecting and queuing messages.

Manuel Lemos
Picture of Nguyen Duc Thuan
Name: Nguyen Duc Thuan <contact>
Classes: 3 packages by
Country: Viet Nam Viet Nam
Age: 33
All time rank: 249111 in Viet Nam Viet Nam
Week rank: 713 5 in Viet Nam Viet Nam
Innovation award
Innovation award
Nominee: 2x

Details

aws-sqs-wrapper

PHP library for simplified SQS queue messages processing.

Build Status

Introduction

  • This library converts send/receive/delete SQS messages results into objects. This enables you to utilize code autocompletion without memorizing common attribute names.
  • It removes your boilerplate code by introducing simplified send/receive/delete methods.
  • It decouples publishing and subscribing responsibilities so that your business logic is free from infrastructure awareness.

Installation

composer require ndthuan/aws-sqs-wrapper

Usage

Sending a message

use Aws\Sqs\SqsClient;
use Ndthuan\AwsSqsWrapper\Publishing\Publisher;
use Ndthuan\AwsSqsWrapper\Queue\Connector;

$queueUrl = ''; // get this from your own AWS SQS setup

// creating a publisher
$sqsClient = new SqsClient(...);
$queueConnector = new Connector($sqsClient, $queueUrl);
$publisher = new Publisher($queueConnector);

// send a string message
$publisher->publishString('My message body');
// or send a json serializable object/array
$myMessage = [
    'my' => 'data',
];
$publisher->publishJsonSerializable($myMessage);

Subscribing to a queue

use Aws\Sqs\SqsClient;
use Ndthuan\AwsSqsWrapper\Queue\Connector;
use Ndthuan\AwsSqsWrapper\Queue\ReceivedMessage;
use Ndthuan\AwsSqsWrapper\Queue\ResultMetadata;
use Ndthuan\AwsSqsWrapper\Subscribing\DelegatorSubscriber;

// defining a message processor
class MyMessageProcessor implements MessageProcessorInterface
{
    /
     * @inheritdoc
     */
    public function processMessage(ReceivedMessage $message, ResultMetadata $resultMetadata)
    {
        // your processing logic
    }
}

$queueUrl = ''; // get this from your own AWS SQS setup

// creating a subscriber
$sqsClient = new SqsClient(...);
$queueConnector = new Connector($sqsClient, $queueUrl);
$subscriber = new DelegatorSubscriber(new MyMessageProcessor(), $queueConnector);

// run the subscriber
$subscriber->pullAndProcessMessages();

Exception handling

A message processor may throw exceptions or errors. Subscriber will react differently depending on exception type:

  • On `LogicException` and `ValidationFailureException`: the corresponding message is deleted from queue and the subscriber continues to process other messages.
  • On `FatalException`: the corresponding message is not deleted from queue but the subscriber stops processing and bubbles up the exception.
  • On other kinds of `\Throwable`: the corresponding message is not deleted from queue and the subscriber continues to process other messages.
  Files  
File Role Description
src (3 directories)
tests (1 file, 2 directories)
.travis.yml Data Auxiliary data
composer.json Data Auxiliary data
docker-compose.yml Data Auxiliary data
install-xdebug.sh Data Auxiliary data
LICENSE Lic. License text
phpunit.xml.dist Data Auxiliary data
README.md Doc. Documentation
run_tests.sh Data Auxiliary data
run_tests_with_coverage.sh Data Auxiliary data
wait_for.sh Data Auxiliary data

  Files  /  src  
File Role Description
Publishing (1 file)
Queue (6 files)
Subscribing (6 files, 2 directories)

  Files  /  src  /  Publishing  
File Role Description
   Publisher.php Class Class source

  Files  /  src  /  Queue  
File Role Description
   Connector.php Class Class source
   MessageAttributes.php Class Class source
   ReceivedMessage.php Class Class source
   ReceiveMessageResult.php Class Class source
   ResultMetadata.php Class Class source
   SendMessageResult.php Class Class source

  Files  /  src  /  Subscribing  
File Role Description
Callbacks (3 files)
Exception (3 files)
   AbstractSubscriber.php Class Class source
   DelegatorSubscriber.php Class Class source
   MessageProcessorInterface.php Class Class source
   MessageValidatorInterface.php Class Class source
   SubscriberInterface.php Class Class source
   SubscribingException.php Class Class source

  Files  /  src  /  Subscribing  /  Callbacks  
File Role Description
   LoggingCallbacks.php Class Class source
   NullCallbacks.php Class Class source
   SubscriberCallbacksInterface.php Class Class source

  Files  /  src  /  Subscribing  /  Exception  
File Role Description
   FatalException.php Class Class source
   LogicException.php Class Class source
   ValidationFailureException.php Class Class source

  Files  /  tests  
File Role Description
integration (1 file)
unit (3 directories)
   bootstrap.php Aux. Auxiliary script

  Files  /  tests  /  integration  
File Role Description
   ConnectorTest.php Class Class source

  Files  /  tests  /  unit  
File Role Description
Publishing (1 file)
Queue (1 file)
Subscribing (1 file, 1 directory)

  Files  /  tests  /  unit  /  Publishing  
File Role Description
   PublisherTest.php Class Class source

  Files  /  tests  /  unit  /  Queue  
File Role Description
   MessageAttributesTest.php Class Class source

  Files  /  tests  /  unit  /  Subscribing  
File Role Description
Callbacks (1 file)
   DelegatorSubscriberTest.php Class Class source

  Files  /  tests  /  unit  /  Subscribing  /  Callbacks  
File Role Description
   LoggingCallbacksTest.php Class Class source

 Version Control Unique User Downloads Download Rankings  
 100%
Total:54
This week:0
All time:9,803
This week:318

For more information send a message to info at phpclasses dot org.