Maison  >  Article  >  développement back-end  >  PHP implémente le SDK RabbitMQ open source

PHP implémente le SDK RabbitMQ open source

王林
王林original
2023-06-18 22:30:20725parcourir

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.

  1. implémentation amqp

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();
?>
  1. implémentation de la bibliothèque php-amqp

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn