Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan RabbitMQ untuk melaksanakan penghantaran mesej dalam pembangunan PHP

Cara menggunakan RabbitMQ untuk melaksanakan penghantaran mesej dalam pembangunan PHP

王林
王林asal
2023-06-27 09:32:011082semak imbas

RabbitMQ ialah perisian baris gilir mesej yang boleh digunakan untuk pemesejan antara aplikasi. Dalam pembangunan PHP, RabbitMQ boleh digunakan untuk melaksanakan tugas pemprosesan tak segerak, melaksanakan sistem teragih, dsb. Artikel ini akan memperkenalkan cara menggunakan RabbitMQ untuk melaksanakan penghantaran mesej dalam pembangunan PHP.

1. Pasang perkhidmatan RabbitMQ

RabbitMQ ialah perisian sumber terbuka yang boleh dimuat turun dan dipasang dari laman web rasminya (https://www.rabbitmq.com/download.html). Selepas pemasangan selesai, anda perlu memulakan perkhidmatan RabbitMQ Anda boleh memasukkan arahan berikut pada baris arahan:

sudo service rabbitmq-server start

2. Pasang sambungan Amqp

Pelanggan PHP RabbitMQ ialah sambungan AMQP dan perlu dipasang. menggunakan PECL. Anda boleh memasukkan arahan berikut pada baris arahan:

sudo pecl install amqp

Selepas pemasangan selesai, anda perlu menambah kandungan berikut pada fail php.ini:

extension=amqp.so

3. Buat sambungan

Sebelum menggunakan RabbitMQ, anda perlu untuk membuat sambungan ke pelayannya. Sambungan boleh dibuat menggunakan kelas AMQPConnection. Berikut ialah contoh kod untuk membuat sambungan:

$connection = new AMQPConnection(
    array(
        'host' => 'localhost',
        'port' => 5672,
        'vhost' => '/',
        'login' => 'guest',
        'password' => 'guest'
    )
);

$connection->connect();

IV Buat saluran

Selepas sambungan berjaya dibuat, anda perlu mencipta saluran. Dalam AMQP, saluran ialah saluran ke pelayan di mana berbilang arahan boleh dilaksanakan, dengan itu pemultipleksan pada sambungan yang sama. Berikut ialah contoh kod untuk mencipta saluran:

$channel = new AMQPChannel($connection);

5. Buat baris gilir

Dalam RabbitMQ, mesej disimpan dalam baris gilir dan pengguna perlu membaca mesej daripada baris gilir. Sebelum menggunakan RabbitMQ, anda perlu membuat baris gilir. Berikut ialah contoh kod untuk membuat baris gilir:

$queue = new AMQPQueue($channel);
$queue->setName('my-queue');
$queue->setFlags(AMQP_DURABLE);
$queue->declareQueue();

6. Terbitkan mesej

Selepas membuat baris gilir, anda boleh menerbitkan mesej ke baris gilir supaya pengguna boleh membaca dari baris gilir. Berikut ialah contoh kod untuk menerbitkan mesej:

$exchange = new AMQPExchange($channel);
$exchange->setName('my-exchange');
$exchange->setType(AMQP_EX_TYPE_DIRECT);
$exchange->declareExchange();

$exchange->publish('hello, world', 'my-routing-key');

7. Gunakan mesej

Selepas membuat baris gilir dan menerbitkan mesej, anda boleh mula menggunakan mesej. Dalam RabbitMQ, pengguna ditetapkan untuk menunggu secara menyekat untuk mesej dalam baris gilir sehingga terdapat mesej untuk dibaca oleh pengguna. Berikut ialah contoh kod untuk menggunakan mesej:

$queue->consume(function ($message) {
    $payload = $message->getBody();
    echo "Received message: $payload
";
    $message->delivery_info['channel']->basic_ack($message->delivery_info['delivery_tag']);
});

Menggunakan kaedah consume() AMQPQueue, anda boleh menunggu secara menyekat untuk mesej dalam baris gilir Apabila mesej tiba, ia dihantar ke fungsi panggil balik. Parameter kedua kaedah AMQPQueue::consume() ialah no_ack, yang merupakan jenis Boolean yang menunjukkan sama ada mesej itu harus diakui serta-merta selepas membacanya.

8. Ringkasan

Artikel ini memperkenalkan cara menggunakan RabbitMQ untuk melaksanakan penghantaran mesej dalam proses pembangunan PHP. Dengan memasang RabbitMQ, sambungan Amqp dan langkah-langkah untuk membuat sambungan, saluran, baris gilir, menerbitkan mesej dan menggunakan mesej, kami boleh dengan mudah melaksanakan pemprosesan tugas tak segerak, sistem teragih dan senario perniagaan lain yang memerlukan perkongsian mesej antara berbilang aplikasi.

Atas ialah kandungan terperinci Cara menggunakan RabbitMQ untuk melaksanakan penghantaran mesej dalam pembangunan PHP. 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