Rumah >pembangunan bahagian belakang >tutorial php >Cara menggunakan PHP dan RabbitMQ untuk melaksanakan penerbitan mesej dan corak langganan

Cara menggunakan PHP dan RabbitMQ untuk melaksanakan penerbitan mesej dan corak langganan

王林
王林asal
2023-07-17 22:18:131515semak imbas

Cara menggunakan PHP dan RabbitMQ untuk melaksanakan model penerbitan dan langganan mesej

RabbitMQ ialah sistem baris gilir mesej berprestasi tinggi dan boleh dipercayai, dan PHP ialah bahasa skrip sebelah pelayan yang popular Gabungan kedua-duanya boleh melaksanakan penerbitan mesej dengan berkesan dengan model langganan. Artikel ini akan memperkenalkan cara menggunakan PHP dan RabbitMQ untuk melaksanakan fungsi penerbitan dan langganan mesej, serta melampirkan contoh kod.

  1. Pasang RabbitMQ

Pertama, anda perlu memasang RabbitMQ pada pelayan. Anda boleh memuat turun pakej pemasangan yang sesuai untuk pelayan anda sendiri dari laman web rasmi RabbitMQ (https://www.rabbitmq.com/), dan pasang serta konfigurasikannya mengikut dokumentasi rasmi.

  1. Pasang sambungan AMQP untuk PHP

Dalam PHP, operasi RabbitMQ memerlukan penggunaan sambungan AMQP. Sambungan AMQP boleh dipasang melalui arahan berikut:

sudo apt-get install php-amqp
  1. Konfigurasikan maklumat sambungan RabbitMQ

Untuk menyambung ke pelayan RabbitMQ, kami perlu mengkonfigurasi maklumat sambungan. Dalam contoh, kami akan menggunakan maklumat sambungan tempatan lalai, iaitu untuk menyambung ke pelayan RabbitMQ tempatan.

$connection = new AMQPConnection([
    'host' => 'localhost',
    'port' => '5672',
    'vhost' => '/',
    'login' => 'guest',
    'password' => 'guest'
]);
  1. Isytihar pertukaran dan giliran

Dalam RabbitMQ, penerbitan dan langganan mesej dilaksanakan melalui pertukaran dan giliran. Pertukaran bertanggungjawab untuk menerima mesej dan menghalakannya ke baris gilir yang sepadan, manakala baris gilir bertanggungjawab untuk menyimpan mesej dan memberikannya kepada pengguna.

Dalam contoh, kami mengisytiharkan pertukaran bernama "test_exchange" dan baris gilir bernama "test_queue".

$channel = $connection->channel();

$channel->exchange_declare('test_exchange', 'fanout', false, false, false);

list($queue_name, ,) = $channel->queue_declare('test_queue', false, false, true, false);

$channel->queue_bind($queue_name, 'test_exchange');
  1. Menerbit dan melanggan mesej

Kini, kita boleh mula menerbitkan dan melanggan mesej. Dalam contoh, kami menghantar mesej ringkas kepada "test_exchange" dan melanggannya melalui "test_queue" yang ditentukan.

$message = 'Hello, RabbitMQ!';

$channel->basic_publish(
    new AMQPMessage($message),
    'test_exchange',
    ''
);

echo " [x] Sent '$message'
";

$channel->basic_consume(
    $queue_name,
    '',
    false,
    true,
    false,
    false,
    function ($msg) {
        echo ' [x] Received ', $msg->body, "
";
    }
);

while (count($channel->callbacks)) {
    $channel->wait();
}
  1. Jalankan kod sampel

Simpan kod di atas ke dalam fail PHP, dan kemudian jalankan fail itu melalui terminal.

php example.php

Anda boleh melihat bahawa maklumat yang berkaitan dengan penerbitan dan langganan mesej dikeluarkan dalam terminal.

Melalui langkah di atas, kami berjaya melaksanakan mod penerbitan dan langganan mesej menggunakan PHP dan RabbitMQ.

Ringkasan:

Artikel ini memperkenalkan cara menggunakan PHP dan RabbitMQ untuk melaksanakan fungsi penerbitan dan langganan mesej, serta menyediakan contoh kod terperinci. Dengan menggunakan RabbitMQ, kami boleh melaksanakan sistem baris gilir mesej berprestasi tinggi dan boleh dipercayai, menyediakan mekanisme pemesejan yang lebih fleksibel dan berskala untuk aplikasi.

Atas ialah kandungan terperinci Cara menggunakan PHP dan RabbitMQ untuk melaksanakan penerbitan mesej dan corak langganan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn