Maison  >  Article  >  développement back-end  >  Bibliothèque de bus de messages en PHP8.0

Bibliothèque de bus de messages en PHP8.0

王林
王林original
2023-05-14 08:01:351264parcourir

Avec le développement continu des applications réseau, les files d'attente de messages sont de plus en plus largement utilisées pour les applications à haute concurrence et hautes performances, l'utilisation de files d'attente de messages peut améliorer efficacement la vitesse de réponse et la stabilité du programme. Dans PHP8.0, une nouvelle bibliothèque de bus de messages a été ajoutée, ce qui améliore considérablement l'efficacité de la file d'attente de messages PHP. Cet article présentera l'utilisation de cette bibliothèque en détail.

1. Qu'est-ce qu'un bus de messages ?

Le bus de messages est un modèle de messagerie général qui peut transmettre efficacement les messages des producteurs aux consommateurs. Les producteurs envoient des messages au bus de messages et les consommateurs reçoivent des messages du bus de messages. En tant que middleware, le bus de messages facilite la transmission des messages, réduit le couplage du système et rend plus flexible l'échange d'informations entre les différents modules.

2. Bibliothèque de bus de messages dans PHP8.0

PHP8.0 introduit une bibliothèque de bus de messages appelée "AMQP", qui prend en charge diverses méthodes de fonctionnement des files d'attente de messages, telles que l'envoi et la réception de messages, la création de files d'attente et d'échangeurs, etc. Une fois lancée, cette bibliothèque est devenue l'outil privilégié pour le traitement hautes performances des files d'attente de messages dans l'écosystème PHP.

3. Installez la bibliothèque d'extensions AMQP

Étant donné qu'AMQP n'est pas une bibliothèque standard de PHP, vous devez installer la bibliothèque d'extensions correspondante avant d'utiliser AMQP. La bibliothèque d'extension AMQP peut être installée via PECL. La commande d'installation est la suivante :

pecl install amqp

Une fois l'installation terminée, vous devez ajouter les informations de configuration de la bibliothèque d'extension dans le fichier php.ini :

extension=amqp

4. Comment pour utiliser AMQP

  1. Connectez-vous au bus de messages

Tout d'abord, une connexion au bus de messages doit être établie. Dans AMQP, utilisez AMQPConnection pour vous connecter au bus de messages. La connexion nécessite de spécifier le nom d'hôte, le nom d'utilisateur, le mot de passe et d'autres informations, et divers attributs peuvent être définis, tels que le délai d'attente, l'intervalle de pulsation, etc.

$connection = new AMQPConnection(array(
    'host' => 'localhost',
    'port' => '5672',
    'login' => 'guest',
    'password' => 'guest'
));
  1. Créer une chaîne

Une fois la connexion réussie, vous pouvez créer une chaîne. Le canal est l'unité de gestion de base d'AMQP, qui peut être utilisée pour envoyer et recevoir des messages, lier des files d'attente et des échangeurs, ainsi que d'autres opérations.

$channel = new AMQPChannel($connection);
  1. Déclarer une file d'attente

Dans AMQP, vous devez déclarer une file d'attente avant de pouvoir envoyer des messages à cette file d'attente.

$queue_name = "my_queue_demo";
$queue = new AMQPQueue($channel);
$queue->setName($queue_name);
$queue->declare(); // 声明队列
  1. Envoyer un message

Utilisez la méthode de publication de la file d'attente pour envoyer un message à la file d'attente :

$message = "Hello World!";
$queue->publish($message);
  1. Recevoir un message

Utilisez la méthode get de la file d'attente pour obtenir un message de la file d'attente :

$message = $queue->get();
if ($message) {
    echo "Received Message: " . $message->getBody() . "
";
    $queue->ack($message->getDeliveryTag());
}
  1. Lier les files d'attente et les échanges

Dans AMQP, une file d'attente doit être liée à un échange pour déterminer les messages à recevoir. La liaison peut être effectuée en utilisant la méthode bind de l'échangeur et la méthode bind de la file d'attente.

$exchange_name = "my_exchange_demo";
$exchange = new AMQPExchange($channel);
$exchange->setName($exchange_name);
$exchange->setType(AMQP_EX_TYPE_DIRECT);
$exchange->declare(); // 声明交换器

// 绑定队列和交换器
$queue->bind($exchange_name, $queue_name);
  1. Publier des messages avec Routing Key

Lorsque vous utilisez un commutateur, vous pouvez publier des messages avec Routing Key. La clé de routage est un mot-clé utilisé pour acheminer les messages vers une file d'attente spécifique, spécifiée lors de la liaison de la file d'attente et de l'échange.

$routing_key = "my_routing_key";
$exchange->publish("Hello World!", $routing_key);
  1. Consommez des messages avec la clé de routage

Utilisez la méthode de consommation de la file d'attente pour commencer à consommer lorsqu'il y a un message dans la file d'attente. Une fonction de rappel peut être spécifiée dans la méthode consume pour gérer le message reçu :

$callback = function(AMQPEnvelope $envelope, AMQPQueue $queue) {
    echo "Received Message: " . $envelope->getBody() . "
";
    $queue->ack($envelope->getDeliveryTag());
};

$queue->consume($callback);
  1. Fermez la connexion

Enfin, après avoir fini d'utiliser AMQP, vous devez fermer la connexion au bus de messages.

$connection->disconnect();

5. Résumé

Cet article présente l'utilisation de base de la bibliothèque de bus de messages AMQP en PHP8.0, y compris la connexion du bus de messages, la création de canaux, la déclaration de files d'attente, l'envoi et la réception de messages, la liaison des files d'attente et des échangeurs, et comment Utilisez la clé de routage pour consommer des messages avec la clé de routage, etc. Grâce à l'utilisation de cette bibliothèque, nous pouvons utiliser plus facilement les files d'attente de messages pour implémenter des applications Web à haute concurrence et hautes performances.

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