ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP6 でメッセージキュー操作を実行するにはどうすればよいですか?

ThinkPHP6 でメッセージキュー操作を実行するにはどうすればよいですか?

王林
王林オリジナル
2023-06-12 09:14:232445ブラウズ

インターネットの発展に伴い、アプリケーションのシナリオはますます複雑になり、パフォーマンス要件もますます高くなっています。メッセージ キューは、同時実行性の高いシナリオでプログラムのパフォーマンスと安定性を向上させることができる典型的な非同期通信方法です。 PHP 言語では、ThinkPHP6 フレームワークでもメッセージ キューのサポートが提供されています。この記事では、ThinkPHP6 でメッセージ キューの操作を実行する方法を簡単に紹介します。

  1. 環境設定

まず、メッセージ キューを使用する前に、メッセージ キュー コンポーネントまたはサーバーをインストールする必要があります。ここでは、RabbitMQ をメッセージ キュー サーバーとして使用します。 RabbitMQ をインストールするには、公式ドキュメントまたはその他のオンライン リソースを参照してください。

2 番目に、ThinkPHP6 では、composer: think-amqp を通じて公式に提供されているメッセージ キュー コンポーネントをインストールできます。ターミナルで次のコマンドを使用してインストールできます:

composer require topthink/think-amqp
  1. 構成ファイル

コンポーネントをインストールした後、amqp.php ファイルで関連する構成を行う必要があります。 config ディレクトリ内。例:

<?php
return [
    'default' => [
        'host'          => '127.0.0.1',
        'port'          => 5672,
        'vhost'         => '/',
        'login'         => 'guest',
        'password'      => 'guest',
        // 是否自动开启通道,默认为true
        'auto_declare'  => true,
        // 队列列表
        'queue_list'    => [
            'default'   => [
                'queue_name'    => 'default',
            ],
        ],
        // 交换机列表
        'exchange_list' => [
            'default'   => [
                'exchange_name' => 'default',
                // 默认使用direct交换机类型,也可以使用其他类型
                'exchange_type' => 'direct',
            ],
        ],
        // 绑定列表
        'bind_list'     => [
            'default'   => [
                'queue_name'    => 'default',
                'exchange_name' => 'default',
            ],
        ],
    ],
];

上記の設定ファイルでは、「default」が接続名で、配列には接続情報、キュー リスト、スイッチ リスト、バインディング リストが含まれています。キュー リストとスイッチ リストでは、複数のキューとスイッチ、およびそれらに関連する設定を定義できます。バインディング リストでは、キューとスイッチ間のバインディング関係を定義できます。

注: キュー名、スイッチ名、バインディング名を使用する場合は、それらが一意であることを確認する必要があります。

  1. メッセージの送信

メッセージを送信するには、AMQP クラスのプロデューサー メソッドを使用できます。例:

<?php
namespace appindexcontroller;

use thinkmqpAMQP;

class Index
{
    public function index()
    {
        $config = config('amqp.default');
        $exchange_name = 'default';
        $routing_key = 'default';
        $message = "hello world";
        $producer = AMQP::instance($config)->producer($exchange_name, $routing_key);
        $producer->publish($message);
        echo "send message success";
    }
}

上記のコード, $config は上記の設定ファイルです。「デフォルト」接続情報の場合、$exchange_name はスイッチ名、$routing_key はルーティング キー、$message はメッセージの内容です。

  1. メッセージの受信

メッセージを受信するには、AMQP クラスのコンシューマ メソッドとコンシューマ メソッドを使用する必要があります。例:

<?php
namespace appindexcontroller;

use thinkmqpAMQP;

class Index
{
    public function queue()
    {
        $config = config('amqp.default');
        $queue_name = 'default';
        $callback = function ($envelope, $queue) {
            $msg = $envelope->getBody();
            echo $msg."
";
            $queue->ack($envelope->getDeliveryTag());
        };
        $consumer = AMQP::instance($config)->consumer($queue_name);
        $consumer->consume($callback);
    }
}

上記の場合上記の設定ファイルの「デフォルト」接続情報の場合、$queue_name はキュー名、$callback はコールバック関数です。コールバック関数では、まずメッセージの内容を取得し、次に ack メソッドを実行してメッセージが消費されたことを示します。

  1. 概要

上記は、ThinkPHP6 でメッセージ キューを使用する簡単な例です。メッセージ キューを使用すると、プログラムを分離でき、システムのパフォーマンスと安定性を向上できます。その他のキューの種類、メッセージ確認メカニズム、クラスター ソリューションについては、公式ドキュメントを参照して学習し、理解することができます。

以上がThinkPHP6 でメッセージキュー操作を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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