Artikel yang menganalisis secara ringkas cara menggunakan baris gilir mesej dalam nod

青灯夜游
Lepaskan: 2023-01-17 19:48:31
ke hadapan
2201 orang telah melayarinya

Apakah itu baris gilir mesej? Artikel berikut akan membawa anda melalui konsep asas baris gilir mesej dan memperkenalkan cara menggunakan baris gilir mesej dalam nod saya harap ia akan membantu anda!

Artikel yang menganalisis secara ringkas cara menggunakan baris gilir mesej dalam nod

1. Baris Gilir Mesej

Apakah itu Baris Gilir Mesej

Baris gilir mesej ialah bekas yang menyimpan mesej semasa proses penghantaran mesej Ia pada asasnya baris gilir (masuk dahulu, keluar dahulu)

Artikel yang menganalisis secara ringkas cara menggunakan baris gilir mesej dalam nod

merujuk kepada data yang perlu dihantar, yang boleh berupa teks, rentetan atau objek dan maklumat lain. 消息

ialah perkhidmatan komunikasi antara dua aplikasi 消息队列 mesej boleh kembali serta-merta selepas menyimpan data dalam baris gilir mesej mesej. Iaitu: 产生者 Pastikan data dimasukkan ke dalam baris gilir, dan tidak perlu risau tentang siapa yang akan menerima mesej ini. 接收者 mesej hanya menumpukan pada menerima mesej dan memprosesnya. [Cadangan tutorial berkaitan: 生产者tutorial video nodejs接收者, Pengajaran pengaturcaraan]

Artikel yang menganalisis secara ringkas cara menggunakan baris gilir mesej dalam nod

Apa yang boleh baris gilir mesej lakukan?

  • Penyahgandingan

    Seperti yang diperkenalkan di atas, baris gilir mesej memisahkan pengeluar mesej dan penerima mesej, tanpa menjejaskan setiap lain.

  • Asynchronous

    Asynchronous adalah untuk mengurangkan masa tindak balas permintaan Pengeluar mesej hanya perlu memproses logik mudah dan meletakkan data dalam baris gilir mesej untuk kembali , logik kompleks, seperti: operasi pangkalan data, operasi IO dikendalikan oleh penerima mesej .

  • Pencukuran Puncak

    Apabila aplikasi baris gilir mesej disiarkan, ia boleh menyimpan kemasukan maklumat permintaan serta-merta ke dalam baris gilir mesej dan mengembalikannya serta-merta. Permintaan itu kemudiannya diproses oleh penerima mesej berdasarkan data.

  • Senario Aplikasi

    Aplikasi seperti aktiviti permainan, aktiviti jualan kilat, pesanan, dsb. yang akan menyebabkan peningkatan trafik secara mendadak.

2 Konsep baris gilir mesej

Selepas memperkenalkan maklumat asas baris gilir mesej, mari kita perkenalkan beberapa baris gilir mesej sebelum membangunkan baris gilir mesej. baris gilir pesanan.

pautan, saluran dan baris gilir

pautan (sambungan): mewakili program perkhidmatan dan Pautan antara baris gilir mesej . 生产者Program perkhidmatan boleh mencipta berbilang pautan消费者.

Saluran: Saluran antara pautan baris gilir mesej Pautan boleh mempunyai berbilang saluran .

  • Baris gilir: Barisan gilir yang menyimpan data dalam baris gilir mesej Perkhidmatan baris gilir mesej boleh mempunyai berbilang baris gilir.

  • Ringkasnya, hubungan antara pautan dan baris gilir saluran adalah seperti ini
  • tukar (pertukaran )

Baris Gilir Mesej

Apabila menghantar mesej

,

mestiArtikel yang menganalisis secara ringkas cara menggunakan baris gilir mesej dalam nod mempunyai suis Jika tidak dinyatakan, suis lalai digunakan. Peranan suis adalah untuk menolak mesej ke baris gilir yang sepadan. Terdapat sejumlah 4 jenis suis dalam baris gilir mesej

Terus: Tentukan mod baris gilir Apabila mesej datang, ia hanya akan dihantar ke Baris Gilir yang ditentukan tidak akan menerimanya.

fanout: Mod siaran, apabila mesej datang, ia akan dihantar ke semua baris gilir. topik: mod padanan kabur, pemajuan sepadan melalui padanan kabur.

  • pengepala: Serupa dengan mod Terus.

  • 3.nod menggunakan rabbitMQ
  • Pasang rabbitMQ
Untuk memasang rabbitMQ, anda boleh memuat turun dan memasangnya melalui laman web rasmi

Portal

MAC boleh dipasang terus dengan arahan brew

Mulakan rabbitmq. perkhidmatan selepas pemasangan selesai

amqplib pemasangan projek nod

Artikel yang menganalisis secara ringkas cara menggunakan baris gilir mesej dalam nod

amqplib是node中使用消息队列的一套工具,可以让我们快速地使用消息队列

地址:https://www.npmjs.com/package/amqplib

创建生产者

/** product.js 消费者 */


const amqplib = require('amqplib');
const config = require('./config');

const { connectUrl } = config;

(async () => {
  const connection = await amqplib.connect(connectUrl);

  const channel = await connection.createChannel();
  const exchangeName = 'testExchange';
  const key = 'testQueue';
  const sendMsg = 'hello rabbitmq';
    
  // 知道交换机类型
  await channel.assertExchange(exchangeName, 'fanout', {
    durable: true,
  });
    
  // 指定一个队列
  await channel.assertQueue(key);

  for (let i = 0; i < 100; i++) {
    channel.publish(exchangeName, key, Buffer.from(`${sendMsg} ${i}`));
  }

  await channel.close();
  await connection.close();
})();
Salin selepas log masuk

运行后在后台可以看到新增了一个有100条消息的队列

Artikel yang menganalisis secara ringkas cara menggunakan baris gilir mesej dalam nod

创建消费者

/** customer.js 消费者 */

const amqplib = require(&#39;amqplib&#39;);
const config = require(&#39;./config&#39;);

const { connectUrl } = config;

(async () => {
  let connection = await amqplib.connect(connectUrl);
  const exchangeName = &#39;testExchange&#39;;
  const key = &#39;testQueue&#39;;
  // 创建两个通道
  const channel1 = await connection.createChannel();
  const channel2 = await connection.createChannel();
  // 指定一个交换机
  await channel1.assertExchange(exchangeName, &#39;fanout&#39;, {
    durable: true,
  });
  // 指定一个队列
  await channel1.assertQueue(key);
  await channel1.bindQueue(key, exchangeName, key);
  channel1.consume(key, (msg) => {
    console.log(&#39;channel 1&#39;, msg.content.toString());
  });

  await channel2.assertExchange(exchangeName, &#39;fanout&#39;, {
    durable: true,
  });
  await channel2.assertQueue(key);
  await channel2.bindQueue(key, exchangeName, key);
  channel2.consume(key, (msg) => {
    console.log(&#39;channel 2&#39;, msg.content.toString());
  });
})();
Salin selepas log masuk

执行后可以看到,两个通道可以同时工作接收消息

Artikel yang menganalisis secara ringkas cara menggunakan baris gilir mesej dalam nod

更多node相关知识,请访问:nodejs 教程

Atas ialah kandungan terperinci Artikel yang menganalisis secara ringkas cara menggunakan baris gilir mesej dalam nod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:juejin.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!