nodejs中使用RabbitMq消息中心系统的方式

方式一:通过npm安装amqp库

方式二:通过rabbit.js库http://www.squaremobius.net/rabbit.js/

AMQP:高级消息队列协议,是应用层协议的一个开放标准,RabbitMq是用Erlang语言编写的一个AMQP的开源实现。

核心组件:Exchange & Queue

Exchange称为交换器,Queue是消息队列,这两者都在服务器端,Producer和Consumer分别是生产者和消费者,在客户端

原理:

生产者发送消息给交换器Exchange并带一个RouteKey,如果RouteKey和Exchange与Queue之间的BindKey是一样的,交换器则将它发送给对应的消息队列Queue。

RouteKey和Bindkey在做比较的时候有三种类型

1,直接式direct

通过精确匹配消息的路由关键字,将消息路由到0个或多个消息队列中,判断路由关键字和绑定关键字是不是相等(绑定关键字是用来将消息队列绑定到哪个交换器,他们是多对多的关系)

2,广播式fanout

广播式交换器类型提供了这样的路由机制:不论消息的路由关键字是什么,这条消息都会被路由到所有与该交换器绑定的消息队列中

3,主题式topic

主题式交换器类型提供了这样的路由机制:通过消息的路由关键字和绑定关键字的模式匹配,将消息路由到被绑定的队列中。这种路由可以被用来支持经典的发布/订阅消息传输模型,将消息传递给部分或全部匹配主题模式的多个消费者。

这种类型下的绑定关键字必须是这种格式的:" *.xxx.# ",通配符*表示匹配任意一个单词,#匹配0个或多个单词,绑定关键字用零个或多个标记组成,每个标记之间"."符合分隔。

比如,绑定关键字*.stack.#匹配路由关键字usd.stack和abcd.stack.efg,但不匹配stack.efg。

时间: 2024-10-13 10:08:42

nodejs中使用RabbitMq消息中心系统的方式的相关文章

WSL2+Docker部署RabbitMQ以及在Asp.net core 中使用RabbitMQ示例(1)

本文主要在于最近因疫情不能外出,在家研究的一些技术积累. 主要用到的技术以及知识点: WSL 2 WSL 2+Docker Docker+RabbitMQ 在ASP.NET Core中使用RabbitMQ消息队列    一.WSL 2 1.什么是WSL 2? WSL 2就是 适用于Linux的Windows子系统的第二代版本,全称 Windows Subsystem for Linux 2. 2.为什么要使用WSL2? 其实这里使用WSL2目的,纯碎是为了用Docker.以前微软实现的WSL有些

Python实现RabbitMQ中6种消息模型

RabbitMQ与Redis对比 ? RabbitMQ是一种比较流行的消息中间件,之前我一直使用redis作为消息中间件,但是生产环境比较推荐RabbitMQ来替代Redis,所以我去查询了一些RabbitMQ的资料.相比于Redis,RabbitMQ优点很多,比如: 具有消息消费确认机制 队列,消息,都可以选择是否持久化,粒度更小.更灵活. 可以实现负载均衡 RabbitMQ应用场景 异步处理:比如用户注册时的确认邮件.短信等交由rabbitMQ进行异步处理 应用解耦:比如收发消息双方可以使用

[转]NOVA中的RabbitMQ解析

原博客地址:http://blog.csdn.net/gaoxingnengjisuan NOVA是OpenStack系统的核心模块,主要负责虚拟机实例的生命周期管理.网络管理(前几个版本).存储卷管理(前几个版本).用户管理以及其他相关云平台管理功能,在能力上类似于Amazon EC2和Rackspace Cloud Servers. 消息队列(Queue)与数据库(Database)作为Nova总体架构中的两个重要组成部分,二者通过系统内消息传递和信息共享的方式实现任务之间.模块之间.接口之

.NET 环境中使用RabbitMQ

转自: http://www.cnblogs.com/yangecnu/p/Introduce-RabbitMQ.html 在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的但是执行起来比较较耗时的地方,比如发送短信,邮件提醒,更新文章阅读计数,记录用户操作日志等等,如果实时处理的话,在用户访问量比较大的情况下,对系统压力比较大. 面对这些问题,我们一般会将这些请求,放在消息队列中处理:异

(转)RabbitMQ消息队列(六):使用主题进行消息分发

在上篇文章RabbitMQ消息队列(五):Routing 消息路由 中,我们实现了一个简单的日志系统.Consumer可以监听不同severity的log.但是,这也是它之所以叫做简单日志系统的原因,因为是仅仅能够通过severity设定.不支持更多的标准. 比如syslog unix的日志工具,它可以通过severity (info/warn/crit...) 和模块(auth/cron/kern...).这可能更是我们想要的:我们可以仅仅需要cron模块的log. 为了实现类似的功能,我们需

(转)RabbitMQ消息队列(一): Detailed Introduction 详细介绍

1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的 MSMQ ,IBM 的 Websphere MQ 等),因此,在 2006 年的 6 月,Cisco .Redhat.iMatix 等联合制定了 AMQP 的公开标

RabbitMQ消息队列(六):使用主题进行消息分发

在上篇文章RabbitMQ消息队列(五):Routing 消息路由 中,我们实现了一个简单的日志系统.Consumer可以监听不同severity的log.但是,这也是它之所以叫做简单日志系统的原因,因为是仅仅能够通过severity设定.不支持更多的标准. 比如syslog unix的日志工具,它可以通过severity (info/warn/crit...) 和模块(auth/cron/kern...).这可能更是我们想要的:我们可以仅仅需要cron模块的log. 为了实现类似的功能,我们需

【翻译】DotNetMQ: 一个.NET版完整的消息队列系统

在一个大型的分布式系统中,消息队列是不可缺少的中间件,能很好的解决异步消息.应用解耦.均衡并发等问题.在.net中,偶然发现一个效率不错.安全可靠.功能齐全的消息组件,忍不住翻译过来,供大家快速预览. 注:原作者用windows服务启动消息队列服务,但是本人在win10上测试出错,可自行改成控制台启动消息队列服务,然后用第三方工具注册服务(如:SrvanyUI) 原文:http://www.codeproject.com/Articles/193611/DotNetMQ-A-Complete-M

(转)RabbitMQ消息队列(九):Publisher的消息确认机制

在前面的文章中提到了queue和consumer之间的消息确认机制:通过设置ack.那么Publisher能不到知道他post的Message有没有到达queue,甚至更近一步,是否被某个Consumer处理呢?毕竟对于一些非常重要的数据,可能Publisher需要确认某个消息已经被正确处理. 在我们的系统中,我们没有是实现这种确认,也就是说,不管Message是否被Consume了,Publisher不会去care.他只是将自己的状态publish给上层,由上层的逻辑去处理.如果Message