ホームページ バックエンド開発 PHPチュートリアル PHP マイクロサービスを使用して分散メッセージ通信とプッシュを実装する方法

PHP マイクロサービスを使用して分散メッセージ通信とプッシュを実装する方法

Sep 24, 2023 pm 06:01 PM
配布された PHPマイクロサービス 押す 消息通信

PHP マイクロサービスを使用して分散メッセージ通信とプッシュを実装する方法

PHP マイクロサービスを使用して分散メッセージ通信とプッシュを実装する方法

インターネットの発展に伴い、分散アーキテクチャは現代のソフトウェア開発における重要なトレンドになりました。分散アーキテクチャでは、マイクロサービスは、大規模なアプリケーションを複数の小さな自律的なサービス ユニットに分割する一般的なアーキテクチャ パターンです。コラボレーションと対話は、これらのマイクロサービス間のメッセージ通信を通じて実現されます。

この記事では、PHP マイクロサービスを使用して分散メッセージ通信とプッシュを実装する方法を紹介し、具体的なコード例を示します。

  1. プロジェクトの初期化

まず、新しい PHP プロジェクトを作成します。私たちのプロジェクトが「メッセージサービス」と呼ばれるものだとしましょう。コマンド ラインで次のコマンドを実行します。

mkdir message-service
cd message-service
composer init
ログイン後にコピー

コマンド ライン プロンプトに従ってプロジェクト情報を入力し、生成された 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/"
        }
    }
}
ログイン後にコピー

次に実行します。 次のコマンドを実行すると、必要な依存ライブラリがインストールされます。

composer install
ログイン後にコピー
  1. メッセージ ミドルウェアの構成

分散システムでは、メッセージ ミドルウェアが重要な役割を果たし、責任を負います。メッセージングとマイクロサービス間の通信を処理します。 RabbitMQ、Kafka などのさまざまなメッセージ ミドルウェアを選択できます。ここでは、RabbitMQ を例として取り上げます。

message-service のルート ディレクトリに config という名前のディレクトリを作成し、このディレクトリに rabbitmq.php ファイルを作成します。ファイルに次のコードを追加します。

<?php

return [
    'connections' => [
        'default' => [
            'host' => 'localhost',
            'port' => 5672,
            'user' => 'guest',
            'pass' => 'guest',
            'vhost' => '/',
        ],
    ],
];
ログイン後にコピー
  1. Create messageProducer

次のコードを含む 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;
    }
}
ログイン後にコピー

    メッセージ コンシューマーの作成
次のコードを含む

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);
            }
        }
    }
}
ログイン後にコピー

    メッセージ プロデューサとコンシューマの使用

index.php ファイルでは、プロデューサとコンシューマを使用してメッセージを送受信できます。コードは次のとおりです。

<?php

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

use MessageServiceProducer;
use MessageServiceConsumer;

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

$consumer = new Consumer();
$consumer->consume();
ログイン後にコピー

index.php スクリプトを実行すると、テストに使用されるメッセージが送受信されていることがわかります。

これまで、PHP ベースのマイクロサービス分散メッセージ通信とプッシュを実装してきました。このアーキテクチャを拡張およびカスタマイズして、ビジネス ニーズに応じてより複雑な機能を実現できます。

以上がPHP マイクロサービスを使用して分散メッセージ通信とプッシュを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WeChatで友達の名刺をプッシュする方法 WeChatで友達の名刺をプッシュする方法 Mar 30, 2024 pm 07:16 PM

名刺は、ソフトウェア WeChat で友人をプッシュするために使用できる方法です。一部のユーザーは、WeChat で友人の名刺をプッシュする方法がわかりません。友人の個人ページをクリックし、[詳細] を選択するだけで、友人に名刺を勧めて送信できます。この記事は WeChat プッシュに関するものです。友人の名刺メソッドの紹介により、具体的な内容がわかります。以下は詳細な紹介です。ぜひご覧ください。 WeChat の使い方チュートリアル: WeChat で友人の名刺をプッシュするにはどうすればよいですか? 回答: 友人の個人ページをクリックし、[詳細] を選択して友人に勧めて送信します 詳細: 1. 名刺をプッシュしたい友人をクリックします。 2. 右上隅の[詳細]オプションをクリックします。 3. [TAを友達に勧める]をクリックします。 4. 名刺を送りたい友人を選択します。 5. [送信]をクリックします。

uniapp アプリケーションでメッセージのプッシュと通知を実装する方法 uniapp アプリケーションでメッセージのプッシュと通知を実装する方法 Oct 18, 2023 am 09:19 AM

Uniapp は、複数のプラットフォームで同時に実行されるアプリケーションの開発に使用できる、Vue.js に基づくクロスプラットフォーム開発フレームワークです。 Uniappでは、メッセージプッシュ機能や通知機能を実装する際に、対応するプラグインやAPIをいくつか提供していますので、これらのプラグインやAPIを利用してメッセージプッシュ機能や通知機能を実装する方法を紹介します。 1. メッセージプッシュ メッセージプッシュ機能を実装するには、Uniapp が提供する uni-push プラグインを使用します。このプラグインは Tencent Cloud Push Service に基づいており、複数のプラットフォームにメッセージをプッシュできます

Redis を使用して分散データ同期を実現する方法 Redis を使用して分散データ同期を実現する方法 Nov 07, 2023 pm 03:55 PM

Redis を使用して分散データ同期を実現する方法 インターネット テクノロジーの発展とアプリケーション シナリオのますます複雑化に伴い、分散システムの概念がますます広く採用されています。分散システムでは、データの同期は重要な問題です。高性能のインメモリ データベースである Redis は、データの保存に使用できるだけでなく、分散データ同期の実現にも使用できます。分散データ同期には、通常、パブリッシュ/サブスクライブ (パブリッシュ/サブスクライブ) モードとマスター/スレーブ レプリケーション (マスター/スレーブ) の 2 つの共通モードがあります。

win10の最新バージョン19541はいつリリースされますか? win10の最新バージョン19541はいつリリースされますか? Jan 03, 2024 pm 05:47 PM

2020 年 1 月 9 日、Microsoft は 2020 年最新かつ最初の新しい win10 システム バージョンをリリースしました。この更新プログラムのバージョン番号は win1019541 です。したがって、Microsoft のアップデートに注目している友人は、このアップデートの具体的な内容を知りたいと思っているはずです。さて、編集者が入手した最新ニュースによると、このアップデートは win10 システムのインターフェースに対する多面的な改善です。 win10 19541 の最新バージョンはいつプッシュされますか? 回答: 19541 システムのプッシュ時刻は、2020 年 1 月 9 日です。これは、クリスマス休暇後に Microsoft がプッシュした最初の Windows 10 プレビュー アップデートですが、Microsoft はこれが Windows 1020H1 バージョンであるかどうかを明らかにしていないため、新機能が追加される可能性があります。

Redis が分散セッション管理を実装する方法 Redis が分散セッション管理を実装する方法 Nov 07, 2023 am 11:10 AM

Redis が分散セッション管理を実装する方法には、特定のコード サンプルが必要です。分散セッション管理は、今日インターネット上で注目されているトピックの 1 つです。高い同時実行性と大量のデータに直面して、従来のセッション管理方法は徐々に不十分になりつつあります。 Redis は、高性能のキー/値データベースとして、分散セッション管理ソリューションを提供します。この記事では、Redis を使用して分散セッション管理を実装する方法と、具体的なコード例を紹介します。 1. 分散セッション ストレージとしての Redis の概要 従来のセッション管理方法は、セッション情報を保存することです。

MongoDB を使用して分散タスクのスケジューリングと実行を実装した経験を共有する MongoDB を使用して分散タスクのスケジューリングと実行を実装した経験を共有する Nov 02, 2023 am 09:39 AM

MongoDB は、高いパフォーマンス、スケーラビリティ、柔軟性を備えたオープンソースの NoSQL データベースです。分散システムではタスクのスケジューリングと実行が重要な課題となりますが、MongoDB の特性を活用することで、分散タスクのスケジューリングと実行ソリューションを実現できます。 1. 分散タスク スケジューリングの要件分析 分散システムでは、タスク スケジューリングは、実行のためにタスクをさまざまなノードに割り当てるプロセスです。一般的なタスク スケジューリング要件は次のとおりです。 1. タスク リクエストの分散: タスク リクエストを利用可能な実行ノードに送信します。

Swoole を使用して分散スケジュールされたタスクのスケジューリングを実装する方法 Swoole を使用して分散スケジュールされたタスクのスケジューリングを実装する方法 Nov 07, 2023 am 11:04 AM

Swoole を使用して分散スケジュールされたタスク スケジューリングを実装する方法 はじめに: 従来の PHP 開発では、スケジュールされたタスク スケジューリングを実装するために cron を使用することがよくありますが、cron は単一サーバー上でのみタスクを実行でき、同時実行性の高いシナリオには対応できません。 Swoole は、PHP をベースとした高性能の非同期同時実行フレームワークで、完全なネットワーク通信機能とマルチプロセスのサポートを提供し、分散スケジュールされたタスクのスケジューリングを簡単に実装できます。この記事では、Swooleを使用して分散スケジュールされたタスクのスケジューリングを実装する方法を紹介します。

win10 2004の発売日はいつですか? win10 2004の発売日はいつですか? Jan 04, 2024 pm 04:06 PM

Microsoft が新しいシステム win102004 を発表した後、多くの友人がこのシステムの新しいバージョンに注目しています。では、win102004 のプッシュ時期はいつですか? 編集者の知る限りでは、2020 年 3 月 4 日に正式にプッシュされる予定です。この新しいバージョンのシステムをアップグレードする場合は、コンピュータ上で直接アップグレードすることも、アップグレードをダウンロードしてインストールすることもできます。詳細については、編集者が言ったことを見てみましょう~ win102004 のプッシュ時間はいつですか? win102004 バージョンは、5 月 28 日に公式チャネルを通じてすべての Windows 10 ユーザーにリリースされます。 1. このアップデートでは新機能は追加されませんが、ユーザーは 20H1 でいくつかの優れた改善が期待できます。 2. Windows10

See all articles