ネットワーク アプリケーションの継続的な開発に伴い、メッセージ キューの使用範囲がますます広がっています。同時実行性が高くパフォーマンスの高いアプリケーションの場合、メッセージ キューを使用すると、プログラムの応答速度と安定性が効果的に向上します。 PHP8.0では、PHPのメッセージキューの効率が大幅に向上する新しいメッセージバスライブラリが追加されましたので、この記事ではこのライブラリの使い方について詳しく紹介します。
1. メッセージ バスとは
メッセージ バスは、プロデューサーからコンシューマーにメッセージを効果的に配信できる一般的なメッセージング モデルです。プロデューサはメッセージ バスにメッセージを送信し、コンシューマはメッセージ バスからメッセージを受信します。メッセージ バスはミドルウェアとして、メッセージの送信を容易にし、システムの結合を軽減し、さまざまなモジュール間の情報交換をより柔軟にします。
2. PHP8.0 のメッセージ バス ライブラリ
PHP8.0 では、メッセージの送受信など、メッセージ キューの複数の操作方法をサポートする「AMQP」と呼ばれるメッセージ バス ライブラリが導入されました。このライブラリがリリースされると、PHP エコシステムにおける高パフォーマンスのメッセージ キュー処理に推奨されるツールになりました。
3. AMQP 拡張ライブラリをインストールする
AMQP は PHP の標準ライブラリではないため、AMQP を使用する前に対応する拡張ライブラリをインストールする必要があります。 AMQP 拡張ライブラリは PECL を介してインストールできます。インストール コマンドは次のとおりです:
pecl install amqp
インストールが完了したら、拡張ライブラリの構成情報を php.ini ファイルに追加する必要があります:
extension=amqp
4. AMQP の利用方法
まず、メッセージ バスへの接続を確立する必要があります。 AMQP では、AMQPConnection を使用してメッセージ バスに接続します。接続にはホスト名、ユーザー名、パスワードなどを指定する必要があり、タイムアウトやハートビート間隔などのさまざまな属性を設定できます。
$connection = new AMQPConnection(array( 'host' => 'localhost', 'port' => '5672', 'login' => 'guest', 'password' => 'guest' ));
接続が成功したら、チャネルを作成できます。チャネルは AMQP の基本的な管理単位であり、メッセージの送受信、キューとエクスチェンジャーのバインド、その他の操作に使用できます。
$channel = new AMQPChannel($connection);
AMQP では、このキューにメッセージを送信する前にキューを宣言する必要があります。
$queue_name = "my_queue_demo"; $queue = new AMQPQueue($channel); $queue->setName($queue_name); $queue->declare(); // 声明队列
キューのパブリッシュ メソッドを使用してメッセージをキューに送信します:
$message = "Hello World!"; $queue->publish($message);
キューの get メソッドを使用して、キューからメッセージを取り出します。
$message = $queue->get(); if ($message) { echo "Received Message: " . $message->getBody() . " "; $queue->ack($message->getDeliveryTag()); }
AMQP では、キューは、受信するメッセージを決定する Exchange バインディングである必要があります。バインドは、エクスチェンジャーのバインド メソッドとキューのバインド メソッドを使用して実行できます。
$exchange_name = "my_exchange_demo"; $exchange = new AMQPExchange($channel); $exchange->setName($exchange_name); $exchange->setType(AMQP_EX_TYPE_DIRECT); $exchange->declare(); // 声明交换器 // 绑定队列和交换器 $queue->bind($exchange_name, $queue_name);
スイッチを使用する場合、ルーティング キーを使用してメッセージを公開できます。ルーティング キーは、メッセージを特定のキューにルーティングするために使用されるキーワードで、キューをバインドして交換するときに指定されます。
$routing_key = "my_routing_key"; $exchange->publish("Hello World!", $routing_key);
キューにメッセージがあるときにキューの消費メソッドを使用して消費を開始します。 Consumer メソッドでコールバック関数を指定して、受信したメッセージを処理できます。
$callback = function(AMQPEnvelope $envelope, AMQPQueue $queue) { echo "Received Message: " . $envelope->getBody() . " "; $queue->ack($envelope->getDeliveryTag()); }; $queue->consume($callback);
最後に、AMQP の使用を終了した後、メッセージバス接続との接続。
$connection->disconnect();
5. 概要
この記事では、メッセージ バスへの接続、チャネルの作成、キューの宣言、送受信など、PHP8.0 のメッセージ バス ライブラリである AMQP の基本的な使用法を紹介します。メッセージとバインディング キューとエクスチェンジャーを定義し、ルーティング キーを使用してメッセージを消費するためのルーティング キーの使用方法などを定義します。このライブラリを使用すると、メッセージ キューをより便利に使用して、同時実行性とパフォーマンスの高い Web アプリケーションを実装できます。
以上がPHP8.0のメッセージバスライブラリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。