ホームページ >バックエンド開発 >PHPチュートリアル >RabbitMQ を使用して PHP 開発でメッセージ パッシングを実装する方法
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 サイトの他の関連記事を参照してください。