Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan pemberitahuan mesej yang diedarkan dan tolak dalam perkhidmatan mikro PHP

Bagaimana untuk melaksanakan pemberitahuan mesej yang diedarkan dan tolak dalam perkhidmatan mikro PHP

WBOY
WBOYasal
2023-09-25 16:15:441540semak imbas

Bagaimana untuk melaksanakan pemberitahuan mesej yang diedarkan dan tolak dalam perkhidmatan mikro PHP

Berikut ialah kaedah pelaksanaan pemberitahuan mesej teragih dan tolak berdasarkan perkhidmatan mikro PHP, termasuk contoh kod terperinci.

Tajuk: Pemberitahuan mesej yang diedarkan dan pelaksanaan tolak dalam perkhidmatan mikro PHP

Pengenalan:
Dengan peningkatan seni bina perkhidmatan mikro, semakin banyak aplikasi Seni bina teragih diguna pakai untuk mencapai pemisahan sistem dan penyahgandingan perkhidmatan. Dalam sistem yang diedarkan, pemberitahuan mesej dan tolak adalah keperluan yang sangat biasa untuk komunikasi tak segerak antara perkhidmatan yang berbeza. Untuk perkhidmatan mikro PHP, cara melaksanakan pemberitahuan dan tolak mesej yang diedarkan adalah tugas yang penting dan mencabar. Artikel ini akan memperkenalkan kaedah untuk melaksanakan pemberitahuan mesej yang diedarkan dan menolak dalam perkhidmatan mikro PHP, dan memberikan contoh kod yang sepadan.

1. Menggunakan baris gilir mesej

  1. Memasang dan mengkonfigurasi baris gilir mesej
    Dalam perkhidmatan mikro PHP, kami boleh menggunakan beberapa sistem baris gilir mesej yang popular, Seperti RabbitMQ , Kafka, dsb. Pertama, sistem baris gilir mesej yang sepadan perlu dipasang dan dikonfigurasikan pada pelayan. Mengambil RabbitMQ sebagai contoh, anda boleh memasangnya melalui arahan berikut:
# 安装依赖
sudo apt-get install -y curl gnupg debian-archive-keyring apt-transport-https
# 添加RabbitMQ官方GPG key
curl https://packages.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
# 添加RabbitMQ的APT源
echo "deb https://dl.bintray.com/rabbitmq/debian $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list
# 更新APT源
sudo apt-get update
# 安装RabbitMQ Server
sudo apt-get install -y rabbitmq-server
  1. Buat baris gilir dan suis
    Selepas pemasangan selesai, anda boleh menggunakan Antara muka pengurusan RabbitMQ atau alat baris arahan membuat baris gilir dan suis. Sebagai contoh, anda boleh membuat baris gilir bernama "pemberitahuan" dan pertukaran bernama "pertukaran" menggunakan arahan berikut: Dalam kod PHP, anda boleh menggunakan perpustakaan klien RabbitMQ untuk menghantar dan menerima mesej. Pertama, anda perlu memasang perpustakaan klien RabbitMQ yang sepadan. Ia boleh dipasang melalui Komposer:
# 创建队列
sudo rabbitmqctl add_queue notification
# 创建交换机
sudo rabbitmqctl add_exchange exchange
    Seterusnya, anda boleh menggunakan contoh kod berikut untuk menghantar mesej:
  1. composer require php-amqplib/php-amqplib

    Berikut adalah contoh kod untuk diterima mesej: #🎜 🎜#
    <?php
    require_once __DIR__ . '/vendor/autoload.php';
    
    $connection = new PhpAmqpLibConnectionAMQPStreamConnection('localhost', 5672, 'guest', 'guest');
    $channel = $connection->channel();
    
    $channel->exchange_declare('exchange', 'direct', false, false, false);
    
    $message = 'Hello, world!';
    $channel->basic_publish(new PhpAmqpLibMessageAMQPMessage($message), 'exchange', 'notification');
    
    $channel->close();
    $connection->close();
  2. 2 Gunakan perkhidmatan tolak
Selain menggunakan baris gilir mesej, kami juga boleh menggunakan beberapa perkhidmatan tolak khusus untuk melaksanakan pemberitahuan dan tolak mesej yang diedarkan. Berikut ialah contoh menggunakan perkhidmatan tolak awan (mengambil Alibaba Cloud Push sebagai contoh):

Daftar dan konfigurasikan perkhidmatan tolak

Pertama, anda perlu mendaftar dan membuat perkhidmatan tolak di Alibaba Cloud Perkhidmatan tolak. Selepas pendaftaran berjaya, anda boleh mendapatkan beberapa maklumat pengesahan identiti yang diperlukan, seperti Kunci Akses dan Rahsia Akses. Seterusnya, konfigurasikan maklumat ini ke dalam perkhidmatan mikro PHP untuk memudahkan operasi tolak seterusnya.


Pasang Push SDK

Untuk memudahkan operasi perkhidmatan push, kami boleh menggunakan Alibaba Cloud Push SDK. Gunakan Komposer untuk memasang SDK:
  1. <?php
    require_once __DIR__ . '/vendor/autoload.php';
    
    $connection = new PhpAmqpLibConnectionAMQPStreamConnection('localhost', 5672, 'guest', 'guest');
    $channel = $connection->channel();
    
    $channel->exchange_declare('exchange', 'direct', false, false, false);
    list($queue_name, ,) = $channel->queue_declare('', false, false, true, false);
    $channel->queue_bind($queue_name, 'exchange', 'notification');
    
    $callback = function ($msg) {
        echo 'Received message: ' . $msg->body;
    };
    
    $channel->basic_consume($queue_name, '', false, true, false, false, $callback);
    
    while ($channel->is_consuming()) {
        $channel->wait();
    }
    
    $channel->close();
    $connection->close();

  2. Hantar mesej tekan
  3. Anda boleh menghantar mesej tolak melalui contoh kod berikut:
  4. composer require alibabacloud/sdk
    #🎜 🎜#Ringkasan:
Dengan menggunakan baris gilir mesej dan perkhidmatan tolak, kami boleh melaksanakan pemberitahuan mesej teragih dan fungsi tolak dalam perkhidmatan mikro PHP. Sama ada anda menggunakan perkhidmatan baris gilir mesej atau tolak, anda perlu memasang, mengkonfigurasi dan memanggil API yang sepadan dengan sewajarnya. Membiasakan diri dengan konsep asas dan kaedah pengendalian ini boleh membantu kami melaksanakan fungsi pemberitahuan dan tolak mesej dengan lebih baik dalam sistem teragih serta meningkatkan kebolehpercayaan dan prestasi aplikasi. Sudah tentu, berdasarkan keperluan sebenar, kami juga boleh memilih penyelesaian lain yang sesuai untuk melaksanakan pemberitahuan dan tolak mesej yang diedarkan.

    Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pemberitahuan mesej yang diedarkan dan tolak dalam perkhidmatan mikro 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