


Un article analysant brièvement comment utiliser la file d'attente de messages dans le nœud
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 !
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 sorti)
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. 消息
指的是需要传输的数据,可以是一些文本,字符串,或者是对象等信息。
消息队列
则是两个应用间的通信服务,消息的产生者
将数据存放到消息队列中就可以立即返回,不需要等待消息的接收者
应答。即:生产者
保证数据插入队列,谁来取这条消息不需要管。消息的接收者
则只专注于接受消息并处理。【相关教程推荐:nodejs视频教程、编程教学】
消息队列能做什么
解耦 上面介绍了,消息队列将消息的生产者和消息的接收者分开,彼此都不受影响。
异步 异步就是为了减少请求的响应时间,消息的生产者只需要处理简单的逻辑,并将数据放到消息队列中即可返回,复杂的逻辑,比如:数据库操作,IO操作由消息的接收者处理。
削峰 消息队列应用在服务时,能将瞬时大量涌入的请求信息保存到消息队列中,并立即返回。再由消息的接收者根据数据处理请求。
应用场景 游戏活动,秒杀活动,下单等会造成瞬时流量暴增的应用。
2.消息队列的概念
介绍完消息队列的基本信息,在开发消息队列之前先介绍一下消息队列的一些基本概念~
消息的生产者(producer)与消费者(customer)
上文提到的生产者
与消费者
,提供的是
链接,通道与队列
链接(connection):表示服务程序与消息队列之间的一条链接。一个服务程序可以创建多条链接。
通道(channel):消息队列链接之间的一个通,一个链接可以有多个通道。
队列(queue):消息队列中存放数据的队列,一个消息队列服务可以有多个队列。
总结一下,链接,通道队列之间的关系是这样的
交换机(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服务
然后再本地中访问 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. [Tutoriels associés recommandés : tutoriel vidéo nodejs, Enseignement de la programmation】Que peut faire la file d'attente des messages
- 🎜🎜Découplage🎜 Comme introduit ci-dessus, la file d'attente des messages combine les producteurs et les producteurs des messages Les destinataires du message sont distincts et ne sont pas affectés les uns par les autres. 🎜
- 🎜🎜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 en fonction des données par le destinataire du message. 🎜
- 🎜🎜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🎜🎜
🎜🎜🎜🎜Commutateur (échange)🎜🎜🎜🎜File d'attente des messages🎜Lors de l'envoi d'un message🎜, il doit y avoir un commutateur. S'il n'est pas 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🎜🎜🎜- L'installation de RabbitMQ peut être effectuée via le site officiel Téléchargez et installez, Portail
- MAC peut directement utiliser la commande Brew pour installer
/** 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();
})();
Copier après la connexionCopier après la connexion - Une fois l'installation terminée, démarrez le service Rabbitmq
🎜
🎜🎜Ensuite, visitez 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🎜🎜🎜
- L'installation de RabbitMQ peut être effectuée via le site officiel Téléchargez et installez, Portail
- MAC peut directement utiliser la commande Brew pour installer
/** 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(); })();
Copier après la connexionCopier après la connexion - Une fois l'installation terminée, démarrez le service Rabbitmq

invité
🎜🎜🎜🎜🎜🎜🎜installation du projet de nœud amqplib🎜🎜🎜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(); })();
运行后在后台可以看到新增了一个有100条消息的队列
创建消费者
/** customer.js 消费者 */ const amqplib = require('amqplib'); const config = require('./config'); const { connectUrl } = config; (async () => { let connection = await amqplib.connect(connectUrl); const exchangeName = 'testExchange'; const key = 'testQueue'; // 创建两个通道 const channel1 = await connection.createChannel(); const channel2 = await connection.createChannel(); // 指定一个交换机 await channel1.assertExchange(exchangeName, 'fanout', { durable: true, }); // 指定一个队列 await channel1.assertQueue(key); await channel1.bindQueue(key, exchangeName, key); channel1.consume(key, (msg) => { console.log('channel 1', msg.content.toString()); }); await channel2.assertExchange(exchangeName, 'fanout', { durable: true, }); await channel2.assertQueue(key); await channel2.bindQueue(key, exchangeName, key); channel2.consume(key, (msg) => { console.log('channel 2', msg.content.toString()); }); })();
执行后可以看到,两个通道可以同时工作接收消息
更多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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Pratique de développement Java Websocket : Comment implémenter la fonction de file d'attente de messages Introduction : Avec le développement rapide d'Internet, la communication en temps réel devient de plus en plus importante. Dans de nombreuses applications Web, des mises à jour et des capacités de notification en temps réel sont requises via la messagerie en temps réel. JavaWebsocket est une technologie qui permet la communication en temps réel dans les applications Web. Cet article explique comment utiliser JavaWebsocket pour implémenter la fonction de file d'attente de messages et fournit des exemples de code spécifiques. Concepts de base de la file d'attente de messages

Comment utiliser les files d'attente de messages pour le traitement asynchrone des tâches dans FastAPI Introduction : Dans les applications Web, il est souvent constaté que des tâches chronophages doivent être traitées, telles que l'envoi d'e-mails, la génération de rapports, etc. Si ces tâches sont placées dans un processus requête-réponse synchrone, les utilisateurs devront attendre longtemps, ce qui réduira l'expérience utilisateur et la vitesse de réponse du serveur. Afin de résoudre ce problème, nous pouvons utiliser la file d'attente de messages pour le traitement des tâches asynchrones. Cet article explique comment utiliser les files d'attente de messages pour traiter des tâches asynchrones dans le framework FastAPI.

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

L'authentification est l'une des parties les plus importantes de toute application Web. Ce didacticiel traite des systèmes d'authentification basés sur des jetons et de leurs différences par rapport aux systèmes de connexion traditionnels. À la fin de ce didacticiel, vous verrez une démo entièrement fonctionnelle écrite en Angular et Node.js. Systèmes d'authentification traditionnels Avant de passer aux systèmes d'authentification basés sur des jetons, examinons les systèmes d'authentification traditionnels. L'utilisateur fournit son nom d'utilisateur et son mot de passe dans le formulaire de connexion et clique sur Connexion. Après avoir effectué la demande, authentifiez l'utilisateur sur le backend en interrogeant la base de données. Si la demande est valide, une session est créée à l'aide des informations utilisateur obtenues à partir de la base de données et les informations de session sont renvoyées dans l'en-tête de réponse afin que l'ID de session soit stocké dans le navigateur. Donne accès aux applications soumises à

Développement Golang : Utilisation de NATS pour créer une file d'attente de messages fiable, des exemples de code spécifiques sont nécessaires Introduction : Dans les systèmes distribués modernes, la file d'attente de messages est un composant important utilisé pour gérer la communication asynchrone, découpler les composants du système et assurer une livraison fiable des messages. Cet article explique comment utiliser le langage de programmation Golang et NATS (le nom complet est « High Performance Reliable Messaging System ») pour créer une file d'attente de messages efficace et fiable, et fournit des exemples de code spécifiques. Qu’est-ce que le NATS ? NATS est un système de messagerie léger et open source.

L'utilisation merveilleuse de Redis dans les files d'attente de messages Les files d'attente de messages sont une architecture découplée courante utilisée pour transmettre des messages asynchrones entre applications. En envoyant un message dans une file d'attente, l'expéditeur peut continuer à effectuer d'autres tâches sans attendre une réponse du destinataire. Et le destinataire peut récupérer le message de la file d’attente et le traiter au moment opportun. Redis est une base de données en mémoire open source couramment utilisée, dotée de hautes performances et de capacités de stockage persistantes. Dans les files d'attente de messages, les multiples structures de données et les excellentes performances de Redis en font un choix idéal

Comment utiliser les opérations de script Linux pour implémenter des files d'attente de messages en Java nécessite des exemples de code spécifiques. Les files d'attente de messages sont un mécanisme de communication courant utilisé pour transférer des données entre différents processus. En Java, nous pouvons implémenter des files d'attente de messages à l'aide d'opérations de script Linux afin de pouvoir facilement envoyer ou recevoir des messages depuis la file d'attente. Dans cet article, nous détaillerons comment implémenter des files d'attente de messages à l'aide de scripts Java et Linux, et fournirons des exemples de code spécifiques. Pour démarrer avec Java et Lin

Comment gérer les transactions distribuées et les files d'attente de messages dans le développement C# Introduction : Dans les systèmes distribués d'aujourd'hui, les transactions et les files d'attente de messages sont des composants très importants. Les transactions distribuées et les files d'attente de messages jouent un rôle crucial dans la gestion de la cohérence des données et du découplage du système. Cet article explique comment gérer les transactions distribuées et les files d'attente de messages dans le développement C#, et donne des exemples de code spécifiques. 1. Transactions distribuées Les transactions distribuées font référence à des transactions qui s'étendent sur plusieurs bases de données ou services. Dans les systèmes distribués, assurer la cohérence des données est devenu un défi majeur. Voici deux types de
