In PHP, consuming message queues is often accomplished using various libraries that connect to message brokers. Some popular options include RabbitMQ, Beanstalkd, and Redis. By setting up a consumer, you can continually listen for messages in the queue and process them accordingly.
Here’s a basic example of how to consume messages from a RabbitMQ queue using the PHP AMQP library:
<?php
require_once __DIR__ . '/vendor/autoload.php'; // Load Composer's autoloader
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
$connection = new AMQPStreamConnection('localhost', 5672, 'user', 'password');
$channel = $connection->channel();
$channel->queue_declare('task_queue', false, true, false, false, false, []);
echo ' [*] Waiting for messages. To exit press CTRL+C', PHP_EOL;
$callback = function($msg) {
echo ' [x] Received ', $msg->body, PHP_EOL;
sleep(substr_count($msg->body, '.')); // Simulate work
echo ' [x] Done', PHP_EOL;
};
$channel->basic_consume('task_queue', '', false, true, false, false, $callback);
while ($channel->is_consuming()) {
$channel->wait();
}
$channel->close();
$connection->close();
?>
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?