PHP code example of astepin / rabbitmq-module
1. Go to this page and download the library: Download astepin/rabbitmq-module 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/ */
astepin / rabbitmq-module example snippets
return [
'rabbitmq_module' => [
'connection' => [
// connection name
'default' => [ // default values
'type' => 'stream', // Available: stream, socket, ssl, lazy
'host' => 'localhost',
'port' => 5672,
'username' => 'guest',
'password' => 'guest',
'vhost' => '/',
'insist' => false,
'read_write_timeout' => 2,
'keep_alive' => false,
'connection_timeout' => 3,
'heartbeat' => 0
]
]
]
]
// Getting the 'default' connection
/** @var \Zend\ServiceManager\ServiceLocatorInterface $serviceLocator **/
$connection = $serviceLocator->get('rabbitmq.connection.default');
return [
'rabbitmq_module' => [
'producer' => [
'producer_name' => [
'connection' => 'default', // the connection name
'exchange' => [
'type' => 'direct',
'name' => 'exchange-name',
'durable' => true, // (default)
'auto_delete' => false, // (default)
'internal' => false, // (default)
'no_wait' => false, // (default)
'declare' => true, // (default)
'arguments' => [], // (default)
'ticket' => 0, // (default)
'exchange_binds' => [] // (default)
],
'queue' => [ // optional queue
'name' => 'queue-name' // can be an empty string,
'type' => null, // (default)
'passive' => false, // (default)
'durable' => true, // (default)
'auto_delete' => false, // (default)
'exclusive' => false, // (default)
'no_wait' => false, // (default)
'arguments' => [], // (default)
'ticket' => 0, // (default)
'routing_keys' => [] // (default)
],
'auto_setup_fabric_enabled' => true // auto-setup exchanges and queues
]
]
]
]
// Getting a producer
/** @var \Zend\ServiceManager\ServiceLocatorInterface $serviceLocator **/
/** @var \RabbitMqModule\ProducerInterface $producer **/
$producer = $serviceLocator->get('rabbitmq.producer.producer_name');
// Sending a message
$producer->publish(json_encode(['foo' => 'bar']));
return [
'rabbitmq_module' => [
'consumer' => [
'consumer_name' => [
'description' => 'Consumer description',
'connection' => 'default', // the connection name
'exchange' => [
'type' => 'direct',
'name' => 'exchange-name'
],
'queue' => [
'name' => 'queue-name' // can be an empty string,
'routing_keys' => [
// optional routing keys
]
],
'auto_setup_fabric_enabled' => true, // auto-setup exchanges and queues
'qos' => [
// optional QOS options for RabbitMQ
'prefetch_size' => 0,
'prefetch_count' => 1,
'global' => false
],
'callback' => 'my-service-name',
]
]
]
]
AmqpLib\Message\AMQPMessage
// Getting a consumer
/** @var \Zend\ServiceManager\ServiceLocatorInterface $serviceLocator **/
/** @var \RabbitMqModule\Consumer $consumer **/
$consumer = $serviceLocator->get('rabbitmq.consumer.consumer_name');
// Start consumer
$consumer->consume();
use PhpAmqpLib\Message\AMQPMessage;
use RabbitMqModule\ConsumerInterface;
class FetchProposalsConsumer implements ConsumerInterface
{
/**
* @param AMQPMessage $message
*
* @return int
*/
public function execute(AMQPMessage $message)
{
$data = json_decode($message->body, true);
try {
// do something...
} catch (\PDOException $e) {
return ConsumerInterface::MSG_REJECT_REQUEUE;
} catch (\Exception $e) {
return ConsumerInterface::MSG_REJECT;
}
return ConsumerInterface::MSG_ACK;
}
}
return [
'rabbitmq_module' => [
'consumer' => [
'consumer_name' => [
// ...
'exchange' => [
'type' => 'fanout',
'name' => 'exchange_to_bind_to',
'exchange_binds' => [
[
'exchange' => [
'type' => 'fanout',
'name' => 'main_exchange'
],
'routing_keys' => [
'#'
]
]
]
],
]
]
]
]