Table des matières
1. File d'attente de messages
2.消息队列的概念
3.node使用rabbitMQ
Maison interface Web js tutoriel Qu'est-ce qu'une file d'attente de messages ? Comment utiliser la file d'attente de messages dans le nœud ?

Qu'est-ce qu'une file d'attente de messages ? Comment utiliser la file d'attente de messages dans le nœud ?

Jun 02, 2022 am 10:05 AM
nodejs​ node.js node

Qu'est-ce qu'une file d'attente de messages ? L'article suivant vous présentera les concepts de base des files d'attente de messages et vous présentera comment utiliser les files d'attente de messages dans node. J'espère qu'il vous sera utile !

Qu'est-ce qu'une file d'attente de messages ? Comment utiliser la file d'attente de messages dans le nœud ?

1. File d'attente de messages

Qu'est-ce qu'une file d'attente de messages

Une file d'attente de messages est un conteneur qui enregistre les messages pendant le processus de transmission des messages. Il s'agit essentiellement d'une file d'attente (premier entré, premier). out)

Quest-ce quune file dattente de messages ? Comment utiliser la file dattente de messages dans le nœud ?

Message fait référence aux données qui doivent être transmises, qui peuvent être du texte, une chaîne ou un objet et d'autres informations. 消息指的是需要传输的数据,可以是一些文本,字符串,或者是对象等信息。

消息队列则是两个应用间的通信服务,消息的产生者将数据存放到消息队列中就可以立即返回,不需要等待消息的接收者应答。即:生产者保证数据插入队列,谁来取这条消息不需要管。消息的接收者则只专注于接受消息并处理。

Quest-ce quune file dattente de messages ? Comment utiliser la file dattente de messages dans le nœud ?

消息队列能做什么

  • 解耦 上面介绍了,消息队列将消息的生产者和消息的接收者分开,彼此都不受影响。

  • 异步 异步就是为了减少请求的响应时间,消息的生产者只需要处理简单的逻辑,并将数据放到消息队列中即可返回,复杂的逻辑,比如:数据库操作,IO操作由消息的接收者处理。

  • 削峰 消息队列应用在服务时,能将瞬时大量涌入的请求信息保存到消息队列中,并立即返回。再由消息的接收者根据数据处理请求。

  • 应用场景 游戏活动,秒杀活动,下单等会造成瞬时流量暴增的应用。

2.消息队列的概念

介绍完消息队列的基本信息,在开发消息队列之前先介绍一下消息队列的一些基本概念~

消息的生产者(producer)与消费者(customer)

上文提到的生产者消费者,提供的是

链接,通道与队列

  • 链接(connection):表示服务程序与消息队列之间的一条链接。一个服务程序可以创建多条链接

  • 通道(channel):消息队列链接之间的一个通,一个链接可以有多个通道

  • 队列(queue):消息队列中存放数据的队列,一个消息队列服务可以有多个队列。

总结一下,链接,通道队列之间的关系是这样的

Quest-ce quune file dattente de messages ? Comment utiliser la file dattente de messages dans le nœud ?

交换机(exchange)

消息队列发送消息必须要有一个交换机,如果没有指定则用的是默认的交换机。交换机的作用就是将消息才推到对应的队列中。消息队列中一共有4种交换机

  • Direct: 指定队列模式,消息来了,只发给指定的Queue,其他Queue都收不到。

  • fanout: 广播模式,消息来了,就会发送给所有的队列。

  • topic: 模糊匹配模式,通过模糊匹配的方式进行相应转发。

  • header: 与Direct模式类似。

3.node使用rabbitMQ

安装rabbitMQ

  • 安装rabbitMQ可以通过官网上进行下载安装,传送门
  • MAC可以直接用brew命令安装
    brew install rabbitmq
    Copier après la connexion
  • 安装完成后启动rabbitmq服务

Quest-ce quune file dattente de messages ? Comment utiliser la file dattente de messages dans le nœud ?

然后再本地中访问 http://localhost:15672/ 就可以看到rabbitmq服务的后台。初始的账号密码均为 guest

File d'attente des messages est un service de communication entre deux applications. Le générateur du message peut revenir immédiatement après avoir stocké les données dans la file d'attente des messages, sans attendre le message< code. Le >Récepteur répond. Autrement dit : Producer garantit que les données sont insérées dans la file d'attente, et peu importe qui reçoit le message. Le destinataire du message se concentre uniquement sur la réception du message et son traitement.

Quest-ce quune file dattente de messages ? Comment utiliser la file dattente de messages dans le nœud ?Quest-ce quune file dattente de messages ? Comment utiliser la file dattente de messages dans le nœud ?

Ce que la file d'attente de messages peut faire

  • Découplage🎜 Comme introduit ci-dessus, la file d'attente de messages sépare le producteur du message et le destinataire du message sans s'affecter mutuellement. 🎜
  • 🎜🎜Asynchrone🎜 L'asynchrone consiste à réduire le temps de réponse des requêtes. Le producteur de messages n'a besoin que de traiter une logique simple et de placer les données dans la file d'attente des messages pour les renvoyer, telles que : Opérations de base de données. et les opérations IO sont gérées par le 🎜récepteur du message🎜. 🎜
  • 🎜🎜Peak Shaving🎜 Lorsque l'application de file d'attente de messages est en cours de diffusion, elle peut enregistrer l'afflux instantané d'informations de demande dans la file d'attente de messages et le renvoyer immédiatement. La demande est ensuite traitée par le destinataire du message sur la base des données. 🎜
  • 🎜🎜Scénarios d'application🎜 Applications telles que des activités de jeu, des activités de vente flash, des commandes, etc. qui provoqueront une augmentation instantanée du trafic. 🎜

🎜2. Le concept de file d'attente de messages🎜🎜🎜Après avoir présenté les informations de base sur la file d'attente de messages, introduisons la file d'attente de messages avant de développer le message. file d'attente. Quelques concepts de base~🎜🎜🎜🎜Le producteur et le consommateur du message🎜🎜🎜🎜Le producteur et le consommateur mentionnés ci-dessus, sont fournis 🎜🎜🎜🎜 liens, canaux et files d'attente 🎜🎜🎜
  • 🎜Lien (connexion) : Représente un lien entre le programme de service et la file d'attente des messages. 🎜Un programme de service peut créer plusieurs liens🎜. 🎜
  • 🎜Canal : Un canal entre les liens de file d'attente de messages 🎜Un lien peut avoir plusieurs canaux🎜. 🎜
  • 🎜Queue (queue) : La file d'attente qui stocke les données dans la file d'attente des messages. Un service de file d'attente de messages peut avoir plusieurs files d'attente. 🎜
🎜Pour résumer, la relation entre les liens et les files d'attente des canaux est la suivante🎜🎜 Quest-ce quune file dattente de messages ? Comment utiliser la file dattente de messages dans le nœud ? 🎜🎜🎜🎜Exchange (échange) 🎜🎜🎜🎜Message Queue🎜WHEN Envoi d'un message🎜🎜must🎜have un échange, si non si non spécifié, le commutateur par défaut est utilisé. Le rôle du commutateur est de pousser les messages vers la file d'attente correspondante. Il existe un total de 4 types de commutateurs dans la file d'attente des messages🎜
  • 🎜Direct : spécifiez le mode de file d'attente lorsqu'un message arrive, il sera uniquement envoyé à la file d'attente spécifiée et les autres files d'attente ne le recevront pas. . 🎜
  • 🎜fanout : mode diffusion, lorsqu'un message arrive, il sera envoyé à toutes les files d'attente. 🎜
  • 🎜sujet : Mode de correspondance floue, transfert correspondant via la correspondance floue. 🎜
  • 🎜header : similaire au mode Direct. 🎜

🎜3.node utilise RabbitMQ🎜🎜🎜🎜🎜Installer RabbitMQ🎜🎜🎜🎜Quest-ce quune file dattente de messages ? Comment utiliser la file dattente de messages dans le nœud ?🎜🎜 Visitez ensuite http://localhost:15672/ localement pour voir l'arrière-plan du service lapinmq. Le mot de passe initial du compte est invité🎜🎜🎜🎜🎜🎜🎜installation du projet de nœud amqplib🎜🎜🎜🎜amqplib est un ensemble d'outils pour utiliser les files d'attente de messages dans le nœud, ce qui nous permet d'utiliser rapidement les files d'attente de messages🎜

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

创建生产者

/** product.js 消费者 */


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

const { connectUrl } = config;

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

  const channel = await connection.createChannel();
  const exchangeName = &#39;testExchange&#39;;
  const key = &#39;testQueue&#39;;
  const sendMsg = &#39;hello rabbitmq&#39;;
    
  // 知道交换机类型
  await channel.assertExchange(exchangeName, &#39;fanout&#39;, {
    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();
})();
Copier après la connexion
Copier après la connexion

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

Quest-ce quune file dattente de messages ? Comment utiliser la file dattente de messages dans le nœud ?

创建消费者

/** 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());
  });
})();
Copier après la connexion

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

Quest-ce quune file dattente de messages ? Comment utiliser la file dattente de messages dans le nœud ?

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Un article pour parler du contrôle de la mémoire dans Node Un article pour parler du contrôle de la mémoire dans Node Apr 26, 2023 pm 05:37 PM

Le service Node construit sur une base non bloquante et piloté par les événements présente l'avantage d'une faible consommation de mémoire et est très adapté à la gestion de requêtes réseau massives. Dans le contexte de demandes massives, les questions liées au « contrôle de la mémoire » doivent être prises en compte. 1. Le mécanisme de récupération de place du V8 et les limitations de mémoire Js sont contrôlés par la machine de récupération de place

Explication graphique détaillée de la mémoire et du GC du moteur Node V8 Explication graphique détaillée de la mémoire et du GC du moteur Node V8 Mar 29, 2023 pm 06:02 PM

Cet article vous donnera une compréhension approfondie de la mémoire et du garbage collector (GC) du moteur NodeJS V8. J'espère qu'il vous sera utile !

Comment utiliser Express pour gérer le téléchargement de fichiers dans un projet de nœud Comment utiliser Express pour gérer le téléchargement de fichiers dans un projet de nœud Mar 28, 2023 pm 07:28 PM

Comment gérer le téléchargement de fichiers ? L'article suivant vous expliquera comment utiliser Express pour gérer les téléchargements de fichiers dans le projet de nœud. J'espère qu'il vous sera utile !

Parlons en profondeur du module File dans Node Parlons en profondeur du module File dans Node Apr 24, 2023 pm 05:49 PM

Le module de fichiers est une encapsulation des opérations de fichiers sous-jacentes, telles que l'ajout de lecture/écriture/ouverture/fermeture/suppression de fichiers, etc. La plus grande caractéristique du module de fichiers est que toutes les méthodes fournissent deux versions de **synchrone** et ** asynchrone**, with Les méthodes avec le suffixe sync sont toutes des méthodes de synchronisation, et celles qui n'en ont pas sont toutes des méthodes hétérogènes.

Une analyse approfondie de l'outil de gestion de processus de Node « pm2 » Une analyse approfondie de l'outil de gestion de processus de Node « pm2 » Apr 03, 2023 pm 06:02 PM

Cet article partagera avec vous l'outil de gestion de processus de Node "pm2" et expliquera pourquoi pm2 est nécessaire, comment installer et utiliser pm2, j'espère qu'il sera utile à tout le monde !

Enseignement du nœud PI: Qu'est-ce qu'un nœud PI? Comment installer et configurer le nœud PI? Enseignement du nœud PI: Qu'est-ce qu'un nœud PI? Comment installer et configurer le nœud PI? Mar 05, 2025 pm 05:57 PM

Explication détaillée et guide d'installation pour les nœuds de pignon Cet article introduira l'écosystème de pignon en détail - nœuds PI, un rôle clé dans l'écosystème de pignon et fournir des étapes complètes pour l'installation et la configuration. Après le lancement du réseau de test de la blockchain pèse, les nœuds PI sont devenus une partie importante de nombreux pionniers participant activement aux tests, se préparant à la prochaine version du réseau principal. Si vous ne connaissez pas encore Pinetwork, veuillez vous référer à ce qu'est Picoin? Quel est le prix de l'inscription? PI Utilisation, exploitation minière et sécurité. Qu'est-ce que Pinetwork? Le projet Pinetwork a commencé en 2019 et possède sa pièce exclusive de crypto-monnaie PI. Le projet vise à en créer un que tout le monde peut participer

Parlons de la boucle d'événements dans Node Parlons de la boucle d'événements dans Node Apr 11, 2023 pm 07:08 PM

La boucle d'événements est un élément fondamental de Node.js et permet une programmation asynchrone en garantissant que le thread principal n'est pas bloqué. Comprendre la boucle d'événements est crucial pour créer des applications efficaces. L'article suivant vous donnera une compréhension approfondie de la boucle d'événements dans Node. J'espère qu'il vous sera utile !

Que dois-je faire si le nœud ne peut pas utiliser la commande npm ? Que dois-je faire si le nœud ne peut pas utiliser la commande npm ? Feb 08, 2023 am 10:09 AM

La raison pour laquelle le nœud ne peut pas utiliser la commande npm est que les variables d'environnement ne sont pas configurées correctement. La solution est la suivante : 1. Ouvrez "Propriétés système" ; 2. Recherchez "Variables d'environnement" -> "Variables système", puis modifiez l'environnement. variables ; 3. Recherchez l'emplacement du dossier nodejs ; 4. Cliquez sur "OK".

See all articles