Maison développement back-end tutoriel php Comment utiliser les microservices PHP pour implémenter la communication par messages distribués et le push

Comment utiliser les microservices PHP pour implémenter la communication par messages distribués et le push

Sep 24, 2023 pm 06:01 PM
分布式 php微服务 推送 消息通信

Comment utiliser les microservices PHP pour implémenter la communication par messages distribués et le push

Comment utiliser les microservices PHP pour implémenter la communication et le push de messages distribués

Avec le développement d'Internet, l'architecture distribuée est devenue une tendance importante dans le développement de logiciels modernes. Dans l'architecture distribuée, les microservices sont un modèle architectural populaire qui divise une grande application en plusieurs petites unités de service autonomes. La collaboration et l'interaction sont réalisées grâce à la communication de messages entre ces microservices.

Cet article expliquera comment utiliser les microservices PHP pour implémenter la communication par messages distribués et le push, et fournira des exemples de code spécifiques.

  1. Initialisez le projet

Tout d'abord, créez un nouveau projet PHP. Disons que notre projet s'appelle "message-service". Exécutez la commande suivante dans la ligne de commande :

mkdir message-service
cd message-service
composer init
Copier après la connexion

Remplissez les informations du projet en fonction des invites de la ligne de commande et ajoutez le contenu suivant au composer.json généré : composer.json中添加以下内容:

{
    "require": {
        "enqueue/enqueue": "^0.9.18",
        "enqueue/elasticsearch": "^0.9.7",
        "enqueue/mongodb": "^0.9.16",
        "enqueue/redis": "^0.9.19",
        "enqueue/stomp": "^0.9.16",
        "enqueue/zmq": "^0.9.13",
        "enqueue/gearman": "^0.9.11"
    },
    "autoload": {
        "psr-4": {
            "MessageService\": "src/"
        }
    }
}
Copier après la connexion

然后执行以下命令安装所需的依赖库:

composer install
Copier après la connexion
  1. 配置消息中间件

在分布式系统中,消息中间件扮演着关键的角色,它负责处理微服务之间的消息传递和通信。我们可以选择不同的消息中间件,如RabbitMQ、Kafka等。这里我们以RabbitMQ为例。

message-service根目录下创建一个名为config的目录,并在该目录下创建rabbitmq.php文件。在该文件中,添加以下代码:

<?php

return [
    'connections' => [
        'default' => [
            'host' => 'localhost',
            'port' => 5672,
            'user' => 'guest',
            'pass' => 'guest',
            'vhost' => '/',
        ],
    ],
];
Copier après la connexion
  1. 创建消息生产者

创建一个名为Producer.php的文件,代码如下:

<?php

namespace MessageService;

use EnqueueAmqpLibAmqpConnectionFactory;
use EnqueueMessagesValidatorTrait;
use InteropAmqpAmqpContext;
use InteropAmqpAmqpMessage;

class Producer
{
    use MessagesValidatorTrait;

    private $context;

    public function __construct()
    {
        $config = include 'config/rabbitmq.php';

        $connectionFactory = new AmqpConnectionFactory($config['connections']['default']);
        $this->context = $connectionFactory->createContext();
    }

    public function publish(string $message): void
    {
        $this->assertMessageValid($message);

        $message = $this->context->createMessage($message);
        $this->context->createProducer()->send($message);
        echo 'Message published: ' . $message->getBody() . PHP_EOL;
    }
}
Copier après la connexion
  1. 创建消息消费者

创建一个名为Consumer.php的文件,代码如下:

<?php

namespace MessageService;

use EnqueueAmqpLibAmqpConnectionFactory;
use InteropAmqpAmqpContext;
use InteropAmqpAmqpMessage;

class Consumer
{
    private $context;

    public function __construct()
    {
        $config = include 'config/rabbitmq.php';

        $connectionFactory = new AmqpConnectionFactory($config['connections']['default']);
        $this->context = $connectionFactory->createContext();
    }

    public function consume(): void
    {
        $this->context->declareQueue($this->context->createQueue('message_queue'));

        $consumer = $this->context->createConsumer($this->context->createQueue('message_queue'));

        while (true) {
            if ($message = $consumer->receive(3000)) {
                echo 'Received message: ' . $message->getBody() . PHP_EOL;
                $consumer->acknowledge($message);
            }
        }
    }
}
Copier après la connexion
  1. 使用消息生产者和消费者

index.php文件中,我们可以使用生产者和消费者来发送和接收消息。代码如下:

<?php

require __DIR__ . '/vendor/autoload.php';

use MessageServiceProducer;
use MessageServiceConsumer;

$producer = new Producer();
$producer->publish('Hello, World!');

$consumer = new Consumer();
$consumer->consume();
Copier après la connexion

运行index.phprrreee

Ensuite, exécutez ce qui suit commande pour installer les dépendances requises Bibliothèque :

rrreee

    Configurer le middleware de message🎜🎜🎜Dans un système distribué, le middleware de message joue un rôle clé et il est responsable de la gestion de la messagerie et de la communication entre les microservices. Nous pouvons choisir différents middlewares de messages, tels que RabbitMQ, Kafka, etc. Ici, nous prenons RabbitMQ comme exemple. 🎜🎜Créez un répertoire nommé config dans le répertoire racine de message-service, et créez le fichier rabbitmq.php dans ce répertoire. Dans ce fichier, ajoutez le code suivant : 🎜rrreee
      🎜Créez un producteur de message🎜🎜🎜Créez un fichier appelé Producer.php avec le code suivant : 🎜rrreee🎜Créer un message consommateur🎜🎜🎜Créer un fichier nommé Consumer.php avec le code suivant : 🎜rrreee
        🎜Utiliser un message producteur Et consommateurs 🎜🎜🎜Dans le fichier index.php, nous pouvons utiliser des producteurs et des consommateurs pour envoyer et recevoir des messages. Le code est le suivant : 🎜rrreee🎜Exécutez le script index.php et vous verrez les messages utilisés pour les tests envoyés et reçus. 🎜🎜Jusqu'à présent, nous avons implémenté une communication par messages distribués par microservices et un push basé sur PHP. Vous pouvez étendre et personnaliser cette architecture pour réaliser des fonctions plus complexes en fonction des besoins de votre entreprise. 🎜

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment pousser les cartes de visite d'amis sur WeChat Comment pousser les cartes de visite d'amis sur WeChat Mar 30, 2024 pm 07:16 PM

Les cartes de visite sont une méthode qui peut être utilisée pour envoyer des amis dans le logiciel WeChat. Certains utilisateurs ne savent pas comment envoyer des cartes de visite à des amis dans WeChat. Il suffit de cliquer sur la page personnelle de l'ami, de sélectionner Plus pour les recommander à des amis et de les envoyer. eux. Cette poussée WeChat L'introduction de la méthode de la carte de visite d'un ami peut vous indiquer le contenu spécifique. Ce qui suit est une introduction détaillée, jetez un oeil ! Tutoriel d'utilisation de WeChat Comment pousser la carte de visite d'un ami sur WeChat Réponse : Cliquez sur la page personnelle de l'ami, sélectionnez Plus pour le recommander à un ami et envoyez-la Détails : 1. Cliquez sur l'ami à qui vous souhaitez pousser une carte de visite. à. 2. Cliquez sur l'option [Plus] dans le coin supérieur droit. 3. Cliquez ensuite sur [Recommander TA à des amis]. 4. Sélectionnez l'ami à qui vous souhaitez envoyer une carte de visite. 5. Cliquez sur [Envoyer].

Quand sortira la dernière version 19541 de win10 ? Quand sortira la dernière version 19541 de win10 ? Jan 03, 2024 pm 05:47 PM

Le 9 janvier 2020, Microsoft a lancé la dernière et première nouvelle version du système Win10 en 2020. Le numéro de version de cette mise à jour est win1019541. Les amis qui ont prêté attention aux mises à jour de Microsoft doivent donc être curieux de connaître le contenu spécifique de cette mise à jour. Eh bien, selon les dernières nouvelles obtenues par l'éditeur, cette mise à jour est une amélioration à multiples facettes de l'interface du système win10. Quand la dernière version de Win10 19541 sera-t-elle poussée ? Réponse : L'heure de poussée du système 19541 est la suivante : 9 janvier 2020. Il s'agit de la première mise à jour préliminaire de Windows 10 proposée par Microsoft après les vacances de Noël. Microsoft n'a pas précisé s'il s'agissait de la version Windows 1020H1, de nouvelles fonctionnalités pourraient donc être ajoutées.

Comment implémenter le push de message et la notification dans l'application Uniapp Comment implémenter le push de message et la notification dans l'application Uniapp Oct 18, 2023 am 09:19 AM

Uniapp est un framework de développement multiplateforme basé sur Vue.js qui peut être utilisé pour développer des applications s'exécutant sur plusieurs plates-formes en même temps. Lors de la mise en œuvre des fonctions de transmission de messages et de notification, Uniapp fournit certains plug-ins et API correspondants. Ce qui suit présente comment utiliser ces plug-ins et API pour implémenter les fonctions de transmission de messages et de notification. 1. Message push Pour implémenter la fonction message push, nous pouvons utiliser le plug-in uni-push fourni par Uniapp. Ce plug-in est basé sur Tencent Cloud Push Service et peut envoyer des messages sur plusieurs plateformes

Comment utiliser Redis pour réaliser une synchronisation distribuée des données Comment utiliser Redis pour réaliser une synchronisation distribuée des données Nov 07, 2023 pm 03:55 PM

Comment utiliser Redis pour réaliser une synchronisation de données distribuées Avec le développement de la technologie Internet et des scénarios d'application de plus en plus complexes, le concept de systèmes distribués est de plus en plus largement adopté. Dans les systèmes distribués, la synchronisation des données est un problème important. En tant que base de données en mémoire hautes performances, Redis peut non seulement être utilisé pour stocker des données, mais peut également être utilisé pour réaliser une synchronisation distribuée des données. Pour la synchronisation distribuée des données, il existe généralement deux modes courants : le mode publication/abonnement (Publish/Subscribe) et la réplication maître-esclave (Master-slave).

Partage d'expérience dans l'utilisation de MongoDB pour mettre en œuvre la planification et l'exécution de tâches distribuées Partage d'expérience dans l'utilisation de MongoDB pour mettre en œuvre la planification et l'exécution de tâches distribuées Nov 02, 2023 am 09:39 AM

MongoDB est une base de données NoSQL open source offrant des performances, une évolutivité et une flexibilité élevées. Dans les systèmes distribués, la planification et l'exécution des tâches sont un problème clé. En utilisant les caractéristiques de MongoDB, des solutions de planification et d'exécution des tâches distribuées peuvent être réalisées. 1. Analyse des exigences pour la planification distribuée des tâches Dans un système distribué, la planification des tâches est le processus d'attribution de tâches à différents nœuds pour exécution. Les exigences courantes en matière de planification des tâches incluent : 1. Distribution des demandes de tâches : envoyer les demandes de tâches aux nœuds d'exécution disponibles.

Comment Redis implémente la gestion distribuée des sessions Comment Redis implémente la gestion distribuée des sessions Nov 07, 2023 am 11:10 AM

La façon dont Redis implémente la gestion de session distribuée nécessite des exemples de code spécifiques. La gestion de session distribuée est aujourd'hui l'un des sujets brûlants sur Internet. Face à une concurrence élevée et à de gros volumes de données, les méthodes traditionnelles de gestion de session deviennent progressivement inadéquates. En tant que base de données clé-valeur hautes performances, Redis fournit une solution de gestion de session distribuée. Cet article expliquera comment utiliser Redis pour implémenter la gestion de session distribuée et donnera des exemples de code spécifiques. 1. Introduction à Redis en tant que stockage de session distribué La méthode traditionnelle de gestion de session consiste à stocker les informations de session.

Comment utiliser Swoole pour mettre en œuvre la planification distribuée des tâches planifiées Comment utiliser Swoole pour mettre en œuvre la planification distribuée des tâches planifiées Nov 07, 2023 am 11:04 AM

Comment utiliser Swoole pour implémenter la planification distribuée des tâches planifiées Introduction : Dans le développement PHP traditionnel, nous utilisons souvent cron pour implémenter la planification des tâches planifiées, mais cron ne peut exécuter des tâches que sur un seul serveur et ne peut pas faire face aux scénarios de concurrence élevée. Swoole est un framework de concurrence asynchrone hautes performances basé sur PHP. Il fournit des capacités de communication réseau complètes et une prise en charge multi-processus, nous permettant de mettre en œuvre facilement une planification distribuée des tâches planifiées. Cet article explique comment utiliser Swoole pour mettre en œuvre la planification distribuée des tâches planifiées.

Quelle est la date de sortie de Win10 2004 ? Quelle est la date de sortie de Win10 2004 ? Jan 04, 2024 pm 04:06 PM

Après que Microsoft ait lancé le nouveau système win102004, de nombreux amis s'intéressent à cette nouvelle version du système. Alors, quelle est la date de sortie de win102004 ? À la connaissance de l'éditeur, il sera officiellement poussé le 4 mars 2020. Si nous souhaitons mettre à niveau cette nouvelle version du système, nous pouvons également mettre à niveau directement sur l'ordinateur, ou télécharger et installer la mise à niveau. Jetons un coup d'œil à ce que l'éditeur a dit pour plus de détails ~ Quelle est la date de diffusion de win102004 ? La version win102004 sera publiée pour tous les utilisateurs de Windows 10 via le canal officiel le 28 mai. 1. Bien que cette mise à jour n'ajoute pas de nouvelles fonctionnalités, les utilisateurs peuvent toujours s'attendre à de bonnes améliorations au cours du 20S1. 2. Et Windows10

See all articles