Maison >développement back-end >tutoriel php >PHP implémente le SDK RabbitMQ open source
RabbitMQ est une file d'attente de messages basée sur le protocole AMQP (Advanced Message Queuing Protocol), largement utilisé dans des scénarios tels que le découplage et le traitement asynchrone. En tant que langage dynamique très populaire, PHP propose également de nombreux SDK RabbitMQ open source. Cet article présentera comment implémenter le SDK open source RabbitMQ via PHP pour répondre aux besoins de développement quotidiens de chacun.
1. Configurer l'environnement RabbitMQ
Avant de démarrer officiellement la mise en œuvre du code, vous devez d'abord configurer l'environnement RabbitMQ. RabbitMQ prend en charge l'installation et l'utilisation de divers systèmes. Pour plus de détails, veuillez vous référer à la documentation officielle : https://www.rabbitmq.com/install.html.
Pour plus de commodité, dans cet article, nous utiliserons Docker pour créer l'environnement RabbitMQ. L'avantage d'utiliser Docker est qu'il peut éviter les problèmes causés par différents environnements. Voici la commande pour créer un conteneur RabbitMQ :
docker run -d --name rabbitmq -p 5672:5672 rabbitmq:3.7.14-management
2. Installez l'extension PHP AMQP
Avant de commencer à utiliser le SDK RabbitMQ, vous devez installer l'extension PHP AMQP. Il peut être installé via la commande suivante :
sudo apt-get install php7.4-dev libpcre3-dev php-dev librabbitmq-dev git clone https://github.com/alanxz/rabbitmq-c.git cd rabbitmq-c && mkdir build && cd build cmake .. cmake --build . sudo cmake --build . --target install sudo pecl install amqp echo "extension=amqp.so" >> /etc/php/7.4/mods-available/amqp.ini sudo php -m | grep amqp
Une fois l'installation terminée, vous pouvez utiliser l'extension AMQP dans votre code PHP.
3. Implémenter le SDK PHP RabbitMQ
Maintenant, nous commençons à implémenter le SDK PHP RabbitMQ. Cet article présentera deux méthodes d'implémentation : l'une est implémentée en étendant amqp via PHP, et l'autre est implémentée en utilisant la bibliothèque php-amqp officiellement fournie.
amqp est un client RabbitMQ en extension PHP qui prend en charge les services de publication, de consommation et de file d'attente de confirmation. Son API est relativement conviviale, simple et facile à utiliser. Voici une brève introduction à la façon de l'utiliser.
i. Publier des messages
Dans l'extension amqp, utilisez la classe AMQPExchange pour implémenter la publication de messages. Voici un exemple simple :
<?php //连接RabbitMQ服务器 $conn = new AMQPConnection(); $conn->setHost('localhost'); $conn->setPort(5672); $conn->setLogin('guest'); $conn->setPassword('guest'); $conn->connect(); //创建交换机 $ex = new AMQPExchange($conn); $ex->setName('exchange-name'); $ex->setType(AMQP_EX_TYPE_DIRECT); $ex->declare(); //发布消息 $message = 'Hello World!'; $ex->publish($message, 'routing-key'); //关闭连接 $conn->disconnect(); ?>
ii. Consommer des messages
En utilisant la classe AMQPQueue, vous pouvez consommer des messages. Voici un exemple de base :
<?php //连接RabbitMQ服务器 $conn = new AMQPConnection(); $conn->setHost('localhost'); $conn->setPort(5672); $conn->setLogin('guest'); $conn->setPassword('guest'); $conn->connect(); //创建队列 $q = new AMQPQueue($conn); $q->setName('queue-name'); $q->declare(); //绑定交换机 $q->bind('exchange-name', 'routing-key'); //消费消息 while (true) { $message = $q->get(); if ($message) { echo $message->getBody() . PHP_EOL; $q->ack($message->getDeliveryTag()); } } //关闭连接 $conn->disconnect(); ?>
php-amqp est la bibliothèque PHP RabbitMQ officiellement fournie, qui est plus facile à utiliser que l'extension amqp. Voici une brève introduction à la façon de l'utiliser.
i. Publier des messages
Utilisez les classes AMQPChannel et AMQPExchange ensemble pour implémenter la publication de messages. Voici un exemple de base :
<?php //连接RabbitMQ服务器 $conn = new AMQPConnection(); $conn->setHost('localhost'); $conn->setPort(5672); $conn->setLogin('guest'); $conn->setPassword('guest'); $conn->connect(); //创建通道和交换机 $channel = new AMQPChannel($conn); $exchange = new AMQPExchange($channel); $exchange->setName('exchange-name'); $exchange->setType(AMQP_EX_TYPE_DIRECT); $exchange->declare(); //发布消息 $message = 'Hello World!'; $exchange->publish($message, 'routing-key'); //关闭连接 $conn->disconnect(); ?>
ii. Consommation de messages
La classe AMQPQueue est utilisée dans la bibliothèque php-amqp pour implémenter la consommation de messages. Voici un exemple de base :
<?php //连接RabbitMQ服务器 $conn = new AMQPConnection(); $conn->setHost('localhost'); $conn->setPort(5672); $conn->setLogin('guest'); $conn->setPassword('guest'); $conn->connect(); //创建通道和队列 $channel = new AMQPChannel($conn); $queue = new AMQPQueue($channel); $queue->setName('queue-name'); $queue->declare(); //绑定交换机 $queue->bind('exchange-name', 'routing-key'); //消费消息 while (true) { $message = $queue->get(); if ($message) { echo $message->getBody() . PHP_EOL; $queue->ack($message->getDeliveryTag()); } } //关闭连接 $conn->disconnect(); ?>
À ce stade, nous avons implémenté avec succès la construction du SDK PHP RabbitMQ.
IV.Résumé
Cet article présente brièvement comment implémenter le SDK open source RabbitMQ via PHP, de la création de l'environnement RabbitMQ à l'installation de l'extension PHP AMQP, puis aux deux méthodes d'implémentation du SDK, je crois que les lecteurs l'ont déjà fait. avoir une certaine compréhension et une certaine expérience pratique. Dans le développement réel, le choix d'un SDK approprié peut améliorer considérablement l'efficacité du développement, nous permettant d'accomplir les tâches rapidement et efficacement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!