Rumah > Artikel > pembangunan bahagian belakang > 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.
3 Pemilihan baris gilir mesej PHP
4. Gunakan RabbitMQ untuk melaksanakan baris gilir mesej tertunda
1. Pasang RabbitMQ
composer require php-amqplib/php-amqplib
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!