Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan baris gilir mesej tertunda yang boleh dipercayai melalui pembangunan baris gilir mesej PHP

Bagaimana untuk melaksanakan baris gilir mesej tertunda yang boleh dipercayai melalui pembangunan baris gilir mesej PHP

WBOY
WBOYasal
2023-09-12 15:43:49966semak imbas

Bagaimana untuk melaksanakan baris gilir mesej tertunda yang boleh dipercayai melalui pembangunan baris gilir mesej PHP

Cara melaksanakan baris gilir mesej tertunda yang boleh dipercayai melalui pembangunan baris gilir mesej PHP

Pengenalan:
Dengan perkembangan pesat Internet, semakin banyak sistem perlu mengendalikan sejumlah besar pemprosesan mesej. Baris gilir mesej telah menjadi salah satu alat penting untuk pemprosesan mesej dan penjadualan tugas. Dalam bidang pembangunan PHP, aplikasi baris gilir mesej juga meningkat secara beransur-ansur. Artikel ini akan memperkenalkan cara untuk melaksanakan baris gilir mesej tertunda yang boleh dipercayai melalui pembangunan baris gilir mesej PHP.

1. Apakah baris gilir mesej? Barisan mesej ialah mekanisme untuk komunikasi tak segerak antara berbilang proses atau berbilang sistem. Baris gilir mesej menghantar mesej ke baris gilir, dan proses atau sistem lain memproses mesej mengikut turutan. Dalam baris gilir mesej, penghantar dan penerima tidak perlu berada dalam talian pada masa yang sama, dan pemprosesan mesej tak segerak boleh dicapai.

2. Mengapakah kita perlu menangguhkan baris gilir mesej dalam sesetengah senario aplikasi, kita ingin menangguhkan pemprosesan mesej tertentu, seperti menghantar kod pengesahan SMS, menghantar pemberitahuan e-mel, dsb. Pemprosesan kelewatan boleh menyelesaikan beban sistem dengan berkesan, meningkatkan prestasi sistem dan memastikan kebolehpercayaan mesej. Barisan gilir mesej yang tertunda boleh mengendalikan tekanan semasa tempoh trafik puncak dan boleh dilaraskan secara dinamik berdasarkan keperluan perniagaan.


3 Pemilihan baris gilir mesej PHP

Dalam pembangunan PHP, terdapat banyak kaedah pelaksanaan baris gilir mesej untuk dipilih, seperti RabbitMQ, ActiveMQ, ZeroMQ, dll. Berdasarkan keperluan sebenar dan prestasi sistem, adalah sangat penting untuk memilih alat baris gilir mesej yang sesuai.


4. Gunakan RabbitMQ untuk melaksanakan baris gilir mesej tertunda

RabbitMQ ialah perisian tengah baris gilir mesej berprestasi tinggi yang boleh dipercayai. Berikut mengambil RabbitMQ sebagai contoh untuk memperkenalkan cara menggunakan pembangunan PHP untuk melaksanakan baris gilir mesej tertunda.


1. Pasang RabbitMQ

Pasang sambungan berkaitan RabbitMQ melalui Komposer.

composer require php-amqplib/php-amqplib

2. Buat penghantar dan penerima

Buat dua fail PHP, penghantar dan penerima, untuk menghantar dan menerima mesej.


Fail pengirim (publisher.php):

<?php
require_once __DIR__ . '/vendor/autoload.php';

use PhpAmqpLibConnectionAMQPStreamConnection;
use PhpAmqpLibMessageAMQPMessage;

$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();

$channel->queue_declare('delayed_queue', false, true, false, false);

$message = new AMQPMessage('hello world', ['delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT]);
$channel->basic_publish($message, '', 'delayed_queue');

$channel->close();
$connection->close();

Fail penerima (consumer.php):

<?php
require_once __DIR__ . '/vendor/autoload.php';

use PhpAmqpLibConnectionAMQPStreamConnection;

$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();

$channel->queue_declare('delayed_queue', false, true, false, false);

$callback = function ($msg) {
    echo 'Received: ' . $msg->body . "
";
};

$channel->basic_consume('delayed_queue', '', false, true, false, false, $callback);

while (count($channel->callbacks)) {
    $channel->wait();
}

$channel->close();
$connection->close();

3. Tetapkan masa tunda

Berbeza daripada baris gilir mesej biasa, baris gilir mesej tertunda perlu menetapkan masa kelewatan mesej. Dalam RabbitMQ, anda boleh menggunakan pemalam rabbitmq_delayed_message_exchange untuk melaksanakan baris gilir mesej tertunda.


Mula-mula, pasang pemalam rabbitmq_delayed_message_exchange.

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

Kemudian, tetapkan masa tunda untuk mesej dalam fail penghantar.

$message = new AMQPMessage('hello world', [
    'delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT,
    'application_headers' => ['x-delay' => 5000] // 延迟5秒
]);
$channel->basic_publish($message, '', 'delayed_queue');

Dengan cara ini, mesej akan ditangguhkan selepas 5 saat.

5. Ringkasan

Melaksanakan baris gilir mesej tertunda yang boleh dipercayai melalui pembangunan baris gilir mesej PHP boleh meningkatkan prestasi dan kebolehpercayaan sistem, dan boleh diperibadikan mengikut keperluan perniagaan. Dalam proses pembangunan sebenar, pembangun perlu memilih alat baris gilir mesej yang sesuai mengikut situasi sebenar dan mengkonfigurasi parameter yang munasabah untuk mencapai prestasi dan kebolehpercayaan yang terbaik. Saya harap artikel ini dapat membantu semua orang, terima kasih kerana membaca!

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan baris gilir mesej tertunda yang boleh dipercayai melalui pembangunan baris gilir mesej 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