Last Updated | | Ratings | | Unique User Downloads | | Download Rankings |
2019-01-06 (19 hours ago) | | Not yet rated by the users | | Total: 46 This week: 9 | | All time: 9,388 This week: 38 |
|
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
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 |
| |
|
|
Innovation award
Nominee: 2x |
|
Details
aws-sqs-wrapper
PHP library for simplified SQS queue messages processing.
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.
|
Applications that use this package |
|
No pages of applications that use this class were specified.
If you know an application of this package, send a message to the author to add a link here.