iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >node消息队列怎么使用
  • 247
分享到

node消息队列怎么使用

2023-07-05 00:07:26 247人浏览 安东尼
摘要

这篇文章主要介绍“node消息队列怎么使用”,在日常操作中,相信很多人在node消息队列怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”node消息队列怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来

这篇文章主要介绍“node消息队列怎么使用”,在日常操作中,相信很多人在node消息队列怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”node消息队列怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.消息队列

什么是消息队列

消息队列就是消息的传输过程中保存消息的容器,本质是一个队列(先进先出)

node消息队列怎么使用

消息指的是需要传输的数据,可以是一些文本,字符串,或者是对象等信息。

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

node消息队列怎么使用

消息队列能做什么

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

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

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

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

2.消息队列的概念

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

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

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

链接,通道与队列

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

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

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

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

node消息队列怎么使用

交换机(exchange)

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

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

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

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

  • header: 与Direct模式类似。

3.node使用rabbitMQ

安装rabbitMQ

  • 安装RabbitMQ可以通过官网上进行下载安装,传送门

  • Mac可以直接用brew命令安装

    brew install rabbitMQ
  • 安装完成后启动rabbitmq服务

node消息队列怎么使用

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

node消息队列怎么使用

node项目安装amqplib

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

创建生产者

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条消息的队列

node消息队列怎么使用

创建消费者

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消息队列怎么使用

到此,关于“node消息队列怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: node消息队列怎么使用

本文链接: https://www.lsjlt.com/news/348615.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • node消息队列怎么使用
    这篇文章主要介绍“node消息队列怎么使用”,在日常操作中,相信很多人在node消息队列怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”node消息队列怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-05
  • node中怎么使用消息队列
    这篇“node中怎么使用消息队列”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“node中怎...
    99+
    2024-04-02
  • Linux消息队列怎么使用
    在Linux中,消息队列是一种进程间通信的机制,用于在不同进程之间传递数据。下面是使用Linux消息队列的步骤: 包含头文件: ...
    99+
    2023-10-22
    Linux
  • 怎么使用redis消息队列
    要使用Redis作为消息队列,你需要按照以下步骤进行操作:1. 安装并启动Redis服务。2. 在你的应用程序中引入Redis的客户...
    99+
    2023-08-24
    redis
  • 使用node怎么实现事件循环和消息队列
    这篇文章将为大家详细讲解有关使用node怎么实现事件循环和消息队列,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是异步?异步和同步应该是经常谈的一个话题了。同步的概念很简单,自上而下依次...
    99+
    2023-06-15
  • MQ消息队列怎么用
    本篇内容介绍了“MQ消息队列怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!消息生产失败一般来说,从生...
    99+
    2024-04-02
  • Redis怎么使用ZSET实现消息队列
    这篇文章主要介绍了Redis怎么使用ZSET实现消息队列的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Redis怎么使用ZSET实现消息队列文章都会有所收获,下面我们一起来看看吧。1.redis 用zset做消...
    99+
    2023-07-05
  • 分析node事件循环和消息队列
    目录什么是异步?为什么需要异步呢?什么是异步IO?什么是事件循环?V8引擎当js运行时消息队列什么是异步? 异步和同步应该是经常谈的一个话题了。同步的概念很简单,自上而下依次执行,必...
    99+
    2024-04-02
  • RabbitMQ消息队列
      一、简介   RabbitMQ是一个在AMQP基础上完整的、可复用的企业消息系统,遵循Mozilla Public License开源协议。MQ全称Message Queue(消息队列),它是一种应用程序对应用程序的通信方式。应用程序...
    99+
    2023-01-31
    队列 消息 RabbitMQ
  • RabbitMQ 消息队列
    RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写...
    99+
    2023-01-31
    队列 消息 RabbitMQ
  • 消息队列 Kafka
    Kafka Kafka 是一个分布式的基于发布/订阅模式的消息队列(MQ,Message Queue),主要应用于大数据实时处理领域 为什么使用消息队列MQ 在高并发环境下,同步请求来不及处理会发生堵塞,从而触发too many conn...
    99+
    2023-10-23
    kafka 分布式
  • Python消息队列
    消息中间件 --->就是消息队列异步方式:不需要立马得到结果,需要排队同步方式:需要实时获得数据,坚决不能排队例子:#多进程模块multiprocessingfrom multiprocessing import Processfro...
    99+
    2023-01-31
    队列 消息 Python
  • Java消息队列什么时候使用
    本篇内容主要讲解“Java消息队列什么时候使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java消息队列什么时候使用”吧!何时需要消息队列当你需要使用消息队列时,首先需要考虑它的必要性。可以...
    99+
    2023-06-04
  • MSMQ消息队列怎么实现
    这篇文章主要介绍了MSMQ消息队列怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MSMQ消息队列怎么实现文章都会有所收获,下面我们一起来看看吧。一、引言Windows Communication Fou...
    99+
    2023-06-29
  • go怎么实现消息队列
    在Go语言中,你可以使用第三方库来实现消息队列。目前比较常用的消息队列库有:1. RabbitMQ:RabbitMQ是一个开源的消息...
    99+
    2023-08-31
    go
  • golang怎么实现消息队列
    在Golang中实现消息队列可以使用Golang的内置库和第三方库来实现。以下是两种常见的实现方式: 使用Golang内置的cha...
    99+
    2023-10-25
    golang
  • 什么是消息队列
    这期内容当中小编将会给大家带来有关什么是消息队列,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。很多人在做架构设计时往往会“过度设计”,简单问题复杂化,上来就引一堆中间件,...
    99+
    2024-04-02
  • Redis中如何使用消息队列
    这篇文章主要介绍了Redis中如何使用消息队列,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。说到消息队列中间件,我们都会想到RabbitMQ...
    99+
    2024-04-02
  • redis怎么实现消息队列
    Redis可以通过以下几种方式实现消息队列:1. List数据结构:使用Redis的List数据结构实现简单的消息队列。生产者将消息...
    99+
    2023-09-14
    redis
  • redis中怎么用list做消息队列
    本文小编为大家详细介绍“redis中怎么用list做消息队列”,内容详细,步骤清晰,细节处理妥当,希望这篇“redis中怎么用list做消息队列”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。leftPush消息入...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作