This library is intended to help management of RabbitMQ server in an application. It provides two ways to query RabbitMQ : Synchronous query with Guzzle and Asynchronous query with React.
use RabbitMQ\Management\AsyncAPIClient;
use React\EventLoop\Factory;
$loop = Factory::create();
$client = AsyncAPIClient::factory($loop, array(
'url' => '127.0.0.1',
));
$loop->addPeriodicTimer(1, function () use ($client) {
$client->listQueues()
->then(function($queues) {
echo "\n------------\n";
foreach ($queues as $queue) {
echo sprintf("Found queue %s with %d messages\n", $queue->name, $queue->messages);
}
}, function ($error) {
echo "An error occured : $error\n";
});
});
$loop->run();
Asynchronous Client do not currently support Guarantee API.
Ensure a queue has a flag :
use RabbitMQ\Management\APIClient;
use RabbitMQ\Management\Entity\Queue;
use RabbitMQ\Management\Exception\EntityNotFoundException;
$client = APIClient::factory(array('url'=>'localhost'));
try {
$queue = $client->getQueue('/', 'queue.leuleu');
if (true !== $queue->durable) {
$queue->durable = true;
$client->deleteQueue('/', 'queue.leuleu');
$client->addQueue($queue);
}
} catch (EntityNotFoundException $e) {
$queue = new Queue();
$queue->vhost = '/';
$queue->name = 'queue.leuleu';
$queue->durable = true;
$client->addQueue($queue);
}
You can also use the Guarantee manager :
use RabbitMQ\Management\APIClient;
use RabbitMQ\Management\Entity\Queue;
use RabbitMQ\Management\Guarantee;
$client = APIClient::factory(array('url'=>'localhost'));
$manager = new Guarantee($client);
$queue = new Queue();
$queue->vhost = '/';
$queue->name = 'queue.leuleu';
$queue->durable = true;
$queue->auto_delete = false;
$queue = $manager->ensureQueue($queue);
Browse the API here.
Read the documentation at Read The Docs !
This library is released under the MIT license (use it baby !)