Maison >développement back-end >PHP7 >Comment développer une file d'attente de messages en PHP7.0 ?

Comment développer une file d'attente de messages en PHP7.0 ?

王林
王林original
2023-05-28 08:40:521098parcourir

Avec l'avancement et le développement continus de la technologie Internet, afin d'assurer l'efficacité et la stabilité de la technologie, divers moyens techniques sont constamment proposés et appliqués. Parmi eux, la technologie Message Queue (ci-après dénommée MQ) est actuellement le moyen technique le plus populaire et le plus utilisé. MQ vise à résoudre le problème de la communication asynchrone entre les différents modules du système, permettant un couplage lâche et une meilleure évolutivité entre les applications. Cet article explique comment développer une file d'attente de messages en PHP7.0.

1. Notions de base de MQ

1. Concept de file d'attente de messages

MQ est une technologie de transmission de messages ou de traitement asynchrone. Les files d'attente de messages permettent une communication faiblement couplée entre les expéditeurs et les destinataires, améliorant ainsi l'interconnectivité et la maintenabilité entre les applications. MQ utilise un middleware tiers pour envoyer des messages à la file d'attente via des producteurs, et les consommateurs extraient les messages de la file d'attente pour les consommer. MQ peut être utilisé dans des systèmes distribués, des systèmes à haute concurrence et des scénarios de retard de données.

2. Type de file d'attente de messages

MQ contient plusieurs types :

P2P : Communication point à point, le producteur envoie des messages à une file d'attente , reçu et consommé par un consommateur, ce qui peut garantir la fiabilité de la livraison des messages.

Pub/Sub : Modèle de publication-abonnement. Les producteurs publient des messages sur des sujets et les abonnés s'abonnent aux messages des sujets et les consomment, ce qui permet d'obtenir une élasticité et une évolutivité de la transmission des messages.

3. Composants MQ

MQ est principalement composé des composants suivants :

Message : l'unité de base du message

#🎜 🎜#Producteur : Le producteur du message

Consumer : Le consommateur du message

Queue : Zone de stockage des messages

Exchange : Routage des messages # 🎜🎜## 🎜🎜#Relation de liaison de message

2 Comment développer MQ en PHP7.0

1 Installer RabbitMQ

. RabbitMQ est une implémentation MQ populaire qui peut prendre en charge les modes P2P et Pub/Sub, prend en charge le développement dans plusieurs langages de programmation et est très facile à utiliser. L'utilisation de RabbitMQ dans PHP7.0 nécessite l'installation de l'extension PHP-AMQP. Les étapes sont les suivantes :

(1) Téléchargez et décompressez RabbitMQ, l'adresse officielle du site Web est la suivante : http://www.rabbitmq.com/

(2 ) Installez Erlang : RabbitMQ est basé sur Erlang Pour le développement du langage, veuillez d'abord installer l'environnement Erlang

(3) Démarrez le serveur RabbitMQ :

$ sudo Rabbitmq-server#🎜 🎜#

(4) Installez PHP- Extension AMQP :

$ pecl install amqp

Une fois l'installation terminée, ajoutez les éléments de configuration suivants dans le php. ini : extension=amqp.so

#🎜🎜 #(5) Redémarrez le serveur Web pour vous assurer que la configuration de l'extension PHP-AMQP prend effet

2.

Pour utiliser RabbitMQ côté PHP, vous devez installer l'extension amqp et composer, puis installer le package amqp .

(1) Installer le package amqp

$ composer nécessite php-amqplib/php-amqplib

(2) Code du producteur

# 🎜🎜#Ce qui suit est un code producteur PHP pour envoyer des messages à la file d'attente :

Tout d'abord, vous devez instancier le client, comme suit :

$connection = new AMQPConnection ();

$connection->setHost('localhost');

$connection->setPort('5672');

$connection->setLogin('guest' ) ;

$connection->setPassword('guest');

$connection->connect();

Mise en place de l'envoi de messages :
#🎜 🎜 #$exchange = 'test-exchange';
$queue = 'test-queue';
$message = 'Hello World';
try {

$channel = new AMQPChannel($connection);
$exchange = new AMQPExchange($channel);
$exchange->setName($exchange);
$exchange->setType(AMQP_EX_TYPE_DIRECT);
$exchange->declareExchange();
$queue = new AMQPQueue($channel);
$queue->setName($queue);
$queue->setFlags(AMQP_DURABLE);
$queue->declareQueue();
$queue->bind($exchange->getName(), $queue->getName());
$exchange->publish($message, $queue->getName());
#🎜🎜 # }

catch (AMQPException $e) {

var_dump($e);

}

$connection->disconnect();

Dans le code ci-dessus, créé A file d'attente test-queue et un échange test d'échangeur, puis lient la file d'attente et l'échangeur, puis envoient le message.

(3) Code consommateur


Ce qui suit est un code consommateur pour consommer les messages de la file d'attente :

Tout d'abord, connectez le client Instancier comme suit :

$connection = new AMQPConnection();

$connection->setHost('localhost');

$connection->setPort('5672 ');# 🎜🎜#$connection->setLogin('guest');

$connection->setPassword('guest');

$connection->connect();#🎜 🎜##🎜 🎜#Mise en place de la consommation des messages :

$exchange = 'test-exchange';

$queue = 'test-queue';

try {#🎜🎜 #
$channel = new AMQPChannel($connection);
$exchange = new AMQPExchange($channel);
$exchange->setName($exchange);
$exchange->setType(AMQP_EX_TYPE_DIRECT);
$exchange->declareExchange();
$queue = new AMQPQueue($channel);
$queue->setName($queue);
$queue->setFlags(AMQP_DURABLE);
$queue->declareQueue();
$queue->bind($exchange->getName(), $queue->getName());
$queue->consume(function(AMQPEnvelope $message, AMQPQueue $queue) {
    echo $message->getBody();
    $queue->ack($message->getDeliveryTag());
});
#🎜 🎜#}

catch (AMQPException $e) {

var_dump($e);

}
$connection->disconnect();

et plus Dans le code , une file d'attente de test et un échange de test d'échange sont créés, puis la file d'attente et l'échange sont liés. Après cela, le consommateur récupère le message de la file d'attente, l'imprime sur la console et transmet $queue-> La méthode ack() confirme que le message est consommé.

3. Résumé

Cet article présente comment développer MQ en PHP7.0. Tout d'abord, vous devez installer les extensions RabbitMQ et PHP-AMQP ; deuxièmement, vous devez installer composer et installer le package amqp ; enfin, écrire du code pour implémenter l'envoi et la consommation de messages. L'émergence de la technologie MQ offre une méthode de transmission de messages plus pratique et plus efficace pour les applications Internet, en particulier dans les scénarios à forte concurrence et les systèmes distribués, MQ est un élément indispensable. En étudiant cet article, j'espère que les lecteurs pourront comprendre les étapes spécifiques et les méthodes de mise en œuvre du développement MQ dans PHP7.0, et fournir une référence pour essayer la technologie MQ dans leurs propres applications métier.

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