ホームページ >バックエンド開発 >PHPチュートリアル >RabbitMQ を使用して PHP 開発でメッセージ パッシングを実装する方法

RabbitMQ を使用して PHP 開発でメッセージ パッシングを実装する方法

王林
王林オリジナル
2023-06-27 09:32:011237ブラウズ

RabbitMQ は、アプリケーション間のメッセージングに使用できるメッセージ キュー ソフトウェアです。 PHP 開発では、RabbitMQ を使用して非同期処理タスクの実装、分散システムの実装などを行うことができます。この記事では、RabbitMQ を使用して PHP 開発でメッセージ パッシングを実装する方法を紹介します。

1. RabbitMQ サービスのインストール

RabbitMQ は、公式 Web サイト (https://www.rabbitmq.com/download.html) からダウンロードしてインストールできるオープンソース ソフトウェアです。インストールが完了したら、RabbitMQ サービスを開始する必要があります。コマンド ラインで次のコマンドを入力できます:

sudo service rabbitmq-server start

2. Amqp 拡張機能をインストールします

RabbitMQ の PHP クライアントは次のとおりです。 AMQP 拡張機能であり、PECL を使用してインストールする必要があります。コマンド ラインに次のコマンドを入力できます。

sudo pecl install amqp

インストールが完了したら、次の内容を php.ini ファイルに追加する必要があります。

extension=amqp.so

3. 接続を作成します。

RabbitMQ を使用する場合 その前に、そのサーバーへの接続を作成する必要があります。接続は AMQPConnection クラスを使用して作成できます。以下は、接続を作成するためのサンプル コードです:

$connection = new AMQPConnection(
    array(
        'host' => 'localhost',
        'port' => 5672,
        'vhost' => '/',
        'login' => 'guest',
        'password' => 'guest'
    )
);

$connection->connect();

4. チャネルの作成

接続が正常に作成された後、チャネルを作成する必要があります。 AMQP では、チャネルは複数のコマンドを実行できるサーバーへのチャネルであり、同じ接続上で多重化されます。以下はチャネルを作成するためのサンプル コードです:

$channel = new AMQPChannel($connection);

5. キューの作成

RabbitMQ では、メッセージはキューに保存され、コンシューマはキューからメッセージを読み取る必要があります。 RabbitMQ を使用する前に、キューを作成する必要があります。以下は、キューを作成するためのサンプル コードです:

$queue = new AMQPQueue($channel);
$queue->setName('my-queue');
$queue->setFlags(AMQP_DURABLE);
$queue->declareQueue();

6. メッセージの公開

キューを作成した後、コンシューマがキューから読み取れるように、メッセージをキューに公開できます。以下は、メッセージを公開するためのサンプル コードです:

$exchange = new AMQPExchange($channel);
$exchange->setName('my-exchange');
$exchange->setType(AMQP_EX_TYPE_DIRECT);
$exchange->declareExchange();

$exchange->publish('hello, world', 'my-routing-key');

7. メッセージの消費

キューを作成してメッセージを公開した後、メッセージの消費を開始できます。 RabbitMQ では、コンシューマは、読み込むメッセージが存在するまでキュー内のメッセージをブロックして待機するように設定されています。

$queue->consume(function ($message) {
    $payload = $message->getBody();
    echo "Received message: $payload
";
    $message->delivery_info['channel']->basic_ack($message->delivery_info['delivery_tag']);
});

AMQPQueue の Consumer() メソッドを使用して、キュー内のメッセージをブロック的に待機します。メッセージが到着すると、コールバック関数に渡されます。 AMQPQueue::consume() メソッドの 2 番目のパラメーターは no_ack で、メッセージを読み取った直後に確認応答する必要があるかどうかを示すブール型です。

8. 概要

この記事では、RabbitMQ を使用して PHP 開発プロセスでメッセージ パッシングを実装する方法を紹介します。 RabbitMQ、Amqp 拡張機能と、接続、チャネル、キューの作成、メッセージの公開、メッセージの消費の手順をインストールすることで、非同期タスク処理、分散システム、および複数のアプリケーション間でメッセージを共有する必要があるその他のビジネス シナリオを簡単に実装できます。

以上がRabbitMQ を使用して PHP 開発でメッセージ パッシングを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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