PHP code example of avto-dev / amqp-rabbit-manager
1. Go to this page and download the library: Download avto-dev/amqp-rabbit-manager library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
avto-dev / amqp-rabbit-manager example snippets
namespace App\Console\Commands;
use AvtoDev\AmqpRabbitManager\ConnectionsFactoryInterface;
class SomeCommand extends \Illuminate\Console\Command
{
/**
* The console command name.
*
* @var string
*/
protected $name = 'some:command';
/**
* Execute the console command.
*
* @param ConnectionsFactoryInterface $connections
*
* @return void
*/
public function handle(ConnectionsFactoryInterface $connections): void
{
$connections->default(); // Get the default RabbitMQ connection instance
}
}
/** @var \AvtoDev\AmqpRabbitManager\ConnectionsFactoryInterface $connections */
/** @var \AvtoDev\AmqpRabbitManager\QueuesFactoryInterface $queues */
$exchange = $connections
->default()
->declareQueue($queues->make('some-queue-id'));
/** @var \AvtoDev\AmqpRabbitManager\ConnectionsFactoryInterface $connections */
/** @var \AvtoDev\AmqpRabbitManager\ExchangesFactoryInterface $exchanges */
$exchange = $connections
->default()
->declareTopic($exchanges->make('some-exchange-id'));
/** @var \AvtoDev\AmqpRabbitManager\ConnectionsFactoryInterface $connections */
/** @var \AvtoDev\AmqpRabbitManager\QueuesFactoryInterface $queues */
/** @var \AvtoDev\AmqpRabbitManager\ExchangesFactoryInterface $exchanges */
$connections
->default()
->bind(new \Interop\Amqp\Impl\AmqpBind(
$exchanges->make('some-exchange-id'),
$queues->make('some-queue-id')
));
/** @var \AvtoDev\AmqpRabbitManager\ConnectionsFactoryInterface $connections */
/** @var \AvtoDev\AmqpRabbitManager\ExchangesFactoryInterface $exchanges */
$connection = $connections->default();
$message = $connection->createMessage('Hello world!');
$connection
->createProducer()
->send($exchanges->make('some-exchange-id'), $message);
/** @var \AvtoDev\AmqpRabbitManager\ConnectionsFactoryInterface $connections */
/** @var \AvtoDev\AmqpRabbitManager\QueuesFactoryInterface $queues */
$connection = $connections->default();
$message = $connection->createMessage('Hello world!');
$connection
->createProducer()
->send($queues->make('some-queue-id'), $message);
/** @var \AvtoDev\AmqpRabbitManager\ConnectionsFactoryInterface $connections */
/** @var \AvtoDev\AmqpRabbitManager\QueuesFactoryInterface $queues */
$connection = $connections->default();
$message = $connection->createMessage('Hello world!');
$connection
->createProducer()
->setPriority(10)
// ...
->send($queues->make('some-queue-id'), $message);
/** @var \AvtoDev\AmqpRabbitManager\ConnectionsFactoryInterface $connections */
/** @var \AvtoDev\AmqpRabbitManager\QueuesFactoryInterface $queues */
$connection = $connections->default();
$message = $connection->createMessage('Hello world!');
$connection
->createProducer()
->setTimeToLive(60000) // 60 sec
// ...
->send($queues->make('some-queue-id'), $message);
/** @var \AvtoDev\AmqpRabbitManager\ConnectionsFactoryInterface $connections */
/** @var \AvtoDev\AmqpRabbitManager\QueuesFactoryInterface $queues */
$consumer = $connections->default()->createConsumer($queues->make('some-queue-id'));
$message = $consumer->receive();
try {
// .. process a message ..
$consumer->acknowledge($message);
} catch (\Exception $e) {
// .. process exception ..
$consumer->reject($message);
}
/** @var \AvtoDev\AmqpRabbitManager\ConnectionsFactoryInterface $connections */
/** @var \AvtoDev\AmqpRabbitManager\QueuesFactoryInterface $queues */
$connection = $connections->default();
$queue = $queues->make('some-queue-id');
$consumer = $connection->createConsumer($queue);
$subscriber = $connection->createSubscriptionConsumer();
$subscriber->subscribe(
$consumer,
function(\Interop\Amqp\AmqpMessage $message, \Enqueue\AmqpExt\AmqpConsumer $consumer): bool {
try {
// .. process a message ..
$consumer->acknowledge($message);
} catch (\Exception $e) {
// .. process exception ..
$consumer->reject($message);
return false; // Subscription will be cancelled
}
return true; // Subscription will be continued
}
);
$subscriber->consume(); // You can pass timeout in milliseconds
/** @var \AvtoDev\AmqpRabbitManager\ConnectionsFactoryInterface $connections */
/** @var \AvtoDev\AmqpRabbitManager\QueuesFactoryInterface $queues */
$connection = $connections->default();
$connection->purgeQueue($queues->make('some-queue-id'));
bash
$ php ./artisan vendor:publish --provider='AvtoDev\AmqpRabbitManager\ServiceProvider'