search
HomeWeb Front-endJS TutorialWhat is a message queue? How to use message queue in node?

What is a message queue? The following article will take you through the basic concepts of message queues and introduce how to use message queues in node. I hope it will be helpful to everyone!

What is a message queue? How to use message queue in node?

1. Message Queue

What is Message Queue

The message queue is a container that saves messages during the message transmission process. It is essentially a queue (first in, first out)

What is a message queue? How to use message queue in node?

##Message refers to the data that needs to be transmitted, which can be some text, string, or object and other information.

Message Queue is a communication service between two applications. The producer of the message can return immediately after storing the data in the message queue without waiting for the message. The receiver responds. That is: Producer ensures that data is inserted into the queue, and there is no need to worry about who will get this message. The receiver of the message only focuses on receiving the message and processing it.

What is a message queue? How to use message queue in node?

What can the message queue do

  • Decoupling As introduced above, the message queue separates the message producer and the message receiver, and neither is affected by the other.

  • Asynchronous Asynchronous is to reduce the response time of requests. The producer of the message only needs to process simple logic and put the data in the message queue to return. , complex logic, such as: database operations, IO operations are handled by the receiver of the message.

  • Peak Shaving When the message queue application is serving, it can save the instantaneous influx of request information into the message queue and return it immediately. The request is then processed based on the data by the recipient of the message.

  • Application Scenarios Applications such as game activities, flash sale activities, orders, etc. will cause a sudden increase in traffic.

2. The concept of message queue

After introducing the basic information of message queue, let’s introduce some of the message queue before developing the message queue. Basic concept~

Producer and consumer of message

producer mentioned above and Consumer provide

links, channels and queues

  • Link (connection): Represents a link between the service program and the message queue.

    A service program can create multiple links.

  • Channel: A channel between message queue links.

    A link can have multiple channels.

  • Queue (queue): The queue that stores data in the message queue. A message queue service can have multiple queues.

To summarize, the relationship between links and channel queues is like this

What is a message queue? How to use message queue in node?

Exchange )

Message queue

When sending a messagemusthave a switch. If not specified, the default switch is used. The role of the switch is to push messages to the corresponding queue. There are a total of 4 types of switches in the message queue

  • Direct: Specify the queue mode. When a message comes, it will only be sent to the specified Queue, and other Queues will not receive it.

  • fanout: Broadcast mode, when a message comes, it will be sent to all queues.

  • topic: Fuzzy matching mode, corresponding forwarding through fuzzy matching.

  • header: Similar to Direct mode.

3.node uses rabbitMQ

##Install rabbitMQ

Installing rabbitMQ can be downloaded and installed through the official website.
    Portal
  • MAC can directly use the brew command to install
    brew install rabbitmq
  • Start the rabbitmq service after the installation is complete

What is a message queue? How to use message queue in node?Then visit http://localhost:15672/ locally to see the background of the rabbitmq service. The initial account and password are

guest

What is a message queue? How to use message queue in node?

##node project installation amqplib

amqplib is a set of tools for using message queues in node, which allows us to quickly use message queues

地址: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();
})();

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

What is a message queue? How to use message queue in node?

创建消费者

/** 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());
  });
})();

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

What is a message queue? How to use message queue in node?

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

The above is the detailed content of What is a message queue? How to use message queue in node?. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:掘金社区. If there is any infringement, please contact admin@php.cn delete
Node.js各版本间有什么区别?如何选择合适的版本?Node.js各版本间有什么区别?如何选择合适的版本?Aug 01, 2022 pm 08:00 PM

Node.js 有 LTS 版本和 Current 版本,这两种版本有什么区别?下面本篇文章带大家快速掌握 Node.js 版本的区别,并聊聊如何选择合适的版本,希望对大家有所帮助!

聊聊使用Node如何实现轻量化进程池和线程池聊聊使用Node如何实现轻量化进程池和线程池Oct 14, 2022 pm 08:05 PM

Node.js 的是一门单线程的语言,它基于 V8 引擎开发,v8 在设计之初是在浏览器端对 JavaScript 语言的解析运行引擎,其最大的特点是单线程,这样的设计避免了一些多线程状态同步问题,使得其更轻量化易上手。

Node.js如何进行版本管理?3款实用版本管理工具分享Node.js如何进行版本管理?3款实用版本管理工具分享Aug 10, 2022 pm 08:20 PM

Node.js如何进行版本管理?下面本篇文章给大家整理分享3 款非常实用的 Node.js 版本管理工具,希望对大家有所帮助!

node爬取数据实例:抓取宝可梦图鉴并生成Excel文件node爬取数据实例:抓取宝可梦图鉴并生成Excel文件Aug 26, 2022 pm 08:31 PM

怎么用Node.js爬取网页的数据并写入Excel文件?下面本篇文章通过一个实例来讲解一下用Node.js爬取网页的数据并生成Excel文件的方法,希望对大家有所帮助!

IDEA中怎么配置安装node.js?方法浅析IDEA中怎么配置安装node.js?方法浅析Dec 21, 2022 pm 08:28 PM

IDEA中怎么运行node?下面本篇文章给大家介绍一下IDEA中配置安装并运行node.js的方法,希望对大家有所帮助!

聊聊怎么使用Node将Excel转为JSON聊聊怎么使用Node将Excel转为JSONNov 28, 2022 pm 08:02 PM

怎么使用Node将Excel转为JSON?下面本篇文章给大家介绍一下Node中转换Excel成JSON的方法,希望对大家有所帮助!

看看怎么使用nodejs生成二维码看看怎么使用nodejs生成二维码Oct 25, 2022 am 09:28 AM

​二维码在生活中无处不在,之前我也使用过java的zxing库生成过二维码,功能很强大。但是其实nodejs上也有很多第三方库能够生成二维码。今天我们就是使用qrcode这个库来生成二维码。

详解node中如何安装多版本并进行切换详解node中如何安装多版本并进行切换May 27, 2022 pm 08:33 PM

本篇文章给大家深入了解一下多版本node的安装方法,并详细介绍一下node版本切换方法,希望对大家有所帮助!

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment