RabbitMQ は、AMQP (Advanced Message Queuing Protocol) プロトコルに基づくメッセージ キューであり、デカップリングや非同期処理などのシナリオで広く使用されています。非常に人気のある動的言語である PHP には、選択できるオープンソースの RabbitMQ SDK も多数あります。この記事では、あらゆる人の日々の開発ニーズを満たすために、PHP を介してオープンソースの RabbitMQ SDK を実装する方法を紹介します。
1. RabbitMQ 環境をセットアップする
コードの実装を正式に開始する前に、最初に RabbitMQ 環境をセットアップする必要があります。 RabbitMQ は、さまざまなシステムのインストールと使用をサポートしています。詳細については、公式ドキュメント: https://www.rabbitmq.com/install.html を参照してください。
便宜上、この記事では docker を使用して RabbitMQ 環境を構築します。 docker を使用する利点は、異なる環境によって引き起こされる問題を回避できることです。 RabbitMQ コンテナを作成するコマンドは次のとおりです。
docker run -d --name rabbitmq -p 5672:5672 rabbitmq:3.7.14-management
2. PHP AMQP 拡張機能をインストールします
RabbitMQ SDK の使用を開始する前に、PHP AMQP 拡張機能をインストールする必要があります。次のコマンドを使用してインストールできます。
sudo apt-get install php7.4-dev libpcre3-dev php-dev librabbitmq-dev git clone https://github.com/alanxz/rabbitmq-c.git cd rabbitmq-c && mkdir build && cd build cmake .. cmake --build . sudo cmake --build . --target install sudo pecl install amqp echo "extension=amqp.so" >> /etc/php/7.4/mods-available/amqp.ini sudo php -m | grep amqp
インストールが完了したら、PHP コードで AMQP 拡張機能を使用できます。
3. RabbitMQ PHP SDK の実装
次に、RabbitMQ PHP SDK の実装を開始します。この記事では、amqp を PHP で拡張して実装する方法と、公式に提供されている php-amqp ライブラリを使用して実装する 2 つの実装方法を紹介します。
amqp は、キュー サービスの公開、消費、確認をサポートする PHP 拡張機能の RabbitMQ クライアントです。その API は比較的フレンドリーで、シンプルで使いやすいです。ここではその使い方を簡単に紹介します。
i. メッセージの公開
amqp 拡張機能では、AMQPExchange クラスを使用してメッセージを公開します。以下は基本的な例です:
<?php //连接RabbitMQ服务器 $conn = new AMQPConnection(); $conn->setHost('localhost'); $conn->setPort(5672); $conn->setLogin('guest'); $conn->setPassword('guest'); $conn->connect(); //创建交换机 $ex = new AMQPExchange($conn); $ex->setName('exchange-name'); $ex->setType(AMQP_EX_TYPE_DIRECT); $ex->declare(); //发布消息 $message = 'Hello World!'; $ex->publish($message, 'routing-key'); //关闭连接 $conn->disconnect(); ?>
ii. メッセージの消費
AMQPQueue クラスを使用してメッセージを消費します。以下は基本的な例です:
<?php //连接RabbitMQ服务器 $conn = new AMQPConnection(); $conn->setHost('localhost'); $conn->setPort(5672); $conn->setLogin('guest'); $conn->setPassword('guest'); $conn->connect(); //创建队列 $q = new AMQPQueue($conn); $q->setName('queue-name'); $q->declare(); //绑定交换机 $q->bind('exchange-name', 'routing-key'); //消费消息 while (true) { $message = $q->get(); if ($message) { echo $message->getBody() . PHP_EOL; $q->ack($message->getDeliveryTag()); } } //关闭连接 $conn->disconnect(); ?>
php-amqp は、公式に提供されている PHP RabbitMQ ライブラリです。amqp 拡張機能と比較すると、Easy使用します。ここではその使い方を簡単に紹介します。
i. メッセージの公開
AMQPChannel クラスと AMQPExchange クラスを一緒に使用して、メッセージの公開を実装します。以下は基本的な例です:
<?php //连接RabbitMQ服务器 $conn = new AMQPConnection(); $conn->setHost('localhost'); $conn->setPort(5672); $conn->setLogin('guest'); $conn->setPassword('guest'); $conn->connect(); //创建通道和交换机 $channel = new AMQPChannel($conn); $exchange = new AMQPExchange($channel); $exchange->setName('exchange-name'); $exchange->setType(AMQP_EX_TYPE_DIRECT); $exchange->declare(); //发布消息 $message = 'Hello World!'; $exchange->publish($message, 'routing-key'); //关闭连接 $conn->disconnect(); ?>
ii. メッセージの消費
AMQPQueue クラスは、メッセージ消費を実装するために php-amqp ライブラリで使用されます。以下は基本的な例です:
<?php //连接RabbitMQ服务器 $conn = new AMQPConnection(); $conn->setHost('localhost'); $conn->setPort(5672); $conn->setLogin('guest'); $conn->setPassword('guest'); $conn->connect(); //创建通道和队列 $channel = new AMQPChannel($conn); $queue = new AMQPQueue($channel); $queue->setName('queue-name'); $queue->declare(); //绑定交换机 $queue->bind('exchange-name', 'routing-key'); //消费消息 while (true) { $message = $queue->get(); if ($message) { echo $message->getBody() . PHP_EOL; $queue->ack($message->getDeliveryTag()); } } //关闭连接 $conn->disconnect(); ?>
これまでのところ、RabbitMQ PHP SDK の構築は正常に実装されました。
4. 概要
この記事では、RabbitMQ 環境の構築から PHP AMQP 拡張機能のインストール、SDK を実装する 2 つの方法まで、PHP を介してオープン ソースの RabbitMQ SDK を実装する方法を簡単に紹介します。読者の皆さんはすでに一定の理解と実践能力をお持ちだと思います。実際の開発では、適切な SDK を選択することで開発効率が大幅に向上し、タスクを迅速かつ効率的に完了できます。
以上がPHP はオープンソースの RabbitMQ SDK を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。