pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/graze/queue

s://github.githubassets.com/assets/github-cf976967feea1e66.css" /> GitHub - graze/queue: :postbox: Flexible abstraction for working with queues in PHP. · GitHub
Skip to content

graze/queue

Repository files navigation

Queue

PHP ~5.5 Latest Version MIT Licensed Build Status Coverage Status Quality Score Total Downloads

This library provides a flexible abstraction layer for working with queues.

It can be installed in whichever way you prefer, but we recommend Composer.

~$ composer require graze/queue

Documentation

Queue operations center around lists of Message objects. Whether you're sending one or multiple Messages, it's always an array. Workers work only on one Message object at a time, whether a list of one or multiple is received from the queue.

use Aws\Sqs\SqsClient;
use Graze\Queue\Adapter\SqsAdapter;
use Graze\Queue\Client;
use Graze\Queue\Message\MessageInterface;

$client = new Client(new SqsAdapter(new SqsClient([
    'region'  => 'us-east-1',
    'version' => '2012-11-05',
    'credentials' => [
        'key'    => 'ive_got_the_key',
        'secret' => 'ive_got_the_secret'
    ],
]), 'queue_name'));

// Producer
$client->send([
    $client->create('foo'),
]);

// Consumer
$client->receive(function (MessageInterface $msg) {
    var_dump($msg->getBody());
    var_dump($msg->getMetadata()->getAll());
});

Adapters

The Adapter object is used to fulfill the low level requests to the queue provider.

Currently supported queue providers are:

Handlers

The Handler object is used to execute worker callables with a list of received messages and handle Acknowledgement.

The current handlers are:

use Graze\Queue\Client;
use Graze\Queue\Adapter\ArrayAdapter;
use Graze\Queue\Handler\BatchAcknowledgementHandler;
use Graze\Queue\Message\MessageInterface;

// Create client with the Batch Acknowledgement Handler.
$client = new Client(new ArrayAdapter(), [
    'handler' => new BatchAcknowledgementHandler(),
]);

// Receive a maximum of 10 messages.
$client->receive(function (MessageInterface $message) {
    // Do some work.
}, 10);

Polling

Polling a queue is supported by passing null as the limit argument to the receive method. The second argument given to your worker is a Closure you should use to stop polling when you're finished working. Make sure you use a handler that acknowledges work effectively too!

Note that the individual Adapter objects may decide to stop polling at any time. A likely scenario where it may stop would be if the queue is of finite length and all possible messages have been received.

use Graze\Queue\Client;
use Graze\Queue\Adapter\ArrayAdapter;
use Graze\Queue\Handler\BatchAcknowledgementHandler;
use Graze\Queue\Message\MessageInterface;

// Create client with the Batch Acknowledgement Handler.
$client = new Client(new ArrayAdapter(), [
    'handler' => new BatchAcknowledgeHandler(100), // Acknowledge after 100 messages.
]);

// Poll until `$done()` is called.
$client->receive(function (MessageInterface $message, Closure $done) {
    // Do some work.

    // You should always define a break condition (i.e. timeout, expired session, etc).
    if ($breakCondition) $done();
}, null);

License

The content of this library is released under the MIT License by Nature Delivered Ltd.

You can find a copy of this license in LICENSE or at http://opensource.org/licenses/mit.

About

📮 Flexible abstraction for working with queues in PHP.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy