RabbitMQ知识一览-工作经验

简介: 大家在项目里面应该都用过MQ,MQ作为解耦神器,还是很有必要学习的。 RabbitMQ是基于AMQP(高级消息队列协议)。,

大家在项目里面应该都用过MQ,MQ作为解耦神器,还是很有必要学习的。

RabbitMQ是基于AMQP(高级消息队列协议)。支持多种操作系统,支持多种语言。

5015984_367dd717d89ae5db
1、Broker:负责接受客户端消息和路由等功能、
2、Virtual host:虚拟主机的概念,类似权限控制组,一个Virtual host可以包括很多Exchange、Queue,不同mq的消费者生产者可以通过VHost隔离
3、Exchange:交换机,可以理解为在收到生产者的消息后负责将将消息转发给对应的Queue
4、Binding:Queue和Exchange之间绑定的关系,
5、Queue:消息队列,存放所有消息,消费者从Queue消费消息
6、Channel:通道,多路复用连接中的一条独立的双向数据流通道,不管是发出消息还是消费消息,都是通过信道完成,TCP连接
7、Consumer:消费者

Exchange分发策略:主要有四种模式,分别是fanout、direct、topic、headers。但是由于headers匹配的是消息体内header信息,而不是routingKey信息,不但跟规则上和direct差不多,而且性能差,故不常用。下面主要介绍其他三种分发策略
1、fanout:广播,所有发到exchange的消息都会被分发到每个绑定在该exchange的queue上去
2、direct:单播,每个Queue在绑定exchange的时候可以设置routingKey信息,当exchange收到消息的时候,只会将消息转发给binding的routingKey与消息体内的routingKey一致的queue。
3、topic:介于单播和广播之间,跟direct差不多,但是支持routingKey的通配符匹配,这个是日常用的最多的分发策略。*(星号)可以代替一个字。#(散列)可以替代零个或多个单词

RabbitMQ日常项目怎么用:不同事业部、大部门使用不同的MQ集群,同一大部门内不同组使用同一个MQ集群但通过VHost隔离,同一个组的不同AppId使用同一个VHost但是使用不同的Exchange(topic模式),每个AppId内不同功能模块使用不同的Queue(队列隔离可以很好的防止功能耦合,防止某一个功能的消息暴增导致其他功能受影响,最好功能之间queue隔离),每个Queue都按topic模式绑定在该appid对应的Exchange上。

命名方式:Vhost为组的名称,Exchange一般为appid的名称,queue为appid_功能名称_queue,routingKey为appid_功能名称_routingKey。这个一般是我的命名方式。

关于MQ能用来干嘛?
1、RabbitMq是有ack机制的,所以用来做重试很好用,比如说一个操作里有两个步骤,第一个异常了第二个就不执行了,而往往都是分布式接口,在分布式系统环境下,数据就很难保持一致,这时候可以通过MQ的ack机制来保证最终数据一致性
2、异步:对于一个操作带来的其他联动处理,往往不需要第一时间处理,可以在后台慢慢处理,比如写日志就可以异步消费。
3、提高处理速度:正常情况处理一个数据可以同步调用,当你处理的数据达到10万+,百万+的时候就不能在用同步的方式去处理了,而也不能采用异步线程,异步线程太不保险,有无法预估的风险,这时候分发消息,再通过mq的ack机制保证每个消息都会被正确处理,不过再往上的批处理就不能用mq了,毕竟千万级的MQ堆积对整个集群也有不小的压力。
4、多机房数据同布:大型分布式系统往往会有多个机房,通过DRC消息(Data Replication Center)底层保证最终数据一致。

善用MQ,会让你的项目更灵活.......

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
2月前
|
消息中间件 存储 Java
一览纵山小,原来RocketMQ是这样工作的!
本文介绍了阿里巴巴开源的高性能分布式消息队列系统RocketMQ的核心组件及其作用。RocketMQ拥有四个关键组件:NameServer、Broker、Producer和Consumer。NameServer作为注册中心维护路由信息;Broker负责消息的接收、存储和转发;Producer生成消息并通过Topic与Broker关联;Consumer则订阅并处理消息。文章详细解析了各组件的功能及交互逻辑,并展示了RocketMQ在异步通信、日志收集、流处理及事件驱动架构中的典型应用场景。通过整体框架的梳理,有助于读者更好地理解和掌握RocketMQ的工作机制。
50 4
|
6月前
|
消息中间件 数据可视化 Go
Rabbitmq 搭建使用案例 [附源码]
Rabbitmq 搭建使用案例 [附源码]
51 0
|
4月前
|
消息中间件 监控 Java
【一键解锁!】Kafka Manager 部署与测试终极指南 —— 从菜鸟到高手的必经之路!
【8月更文挑战第9天】随着大数据技术的发展,Apache Kafka 成为核心组件,用于处理实时数据流。Kafka Manager 提供了简洁的 Web 界面来管理和监控 Kafka 集群。本文介绍部署步骤及示例代码,助您快速上手。首先确认已安装 Java 和 Kafka。
652 4
|
7月前
|
消息中间件 Prometheus 监控
探秘RabbitMQ:社区插件与扩展的奇妙世界【RabbitMQ 三】
探秘RabbitMQ:社区插件与扩展的奇妙世界【RabbitMQ 三】
213 0
|
7月前
|
消息中间件 分布式计算 监控
腾讯技术官手撸笔记,全新演绎“Kafka部署实战”,已开源
我们知道,当下流行的MQ非常多,不过很多公司在技术选型上还是选择使用Kafka。与其他主流MQ进行对比,我们会发现Kafka最大的优点就是吞吐量高。实际上Kafka是高吞吐低延迟的高并发、高性能的消息中间件,配置良好的Kafka集群甚至可以做到每秒几十万、上百万的超高并发写入。
|
消息中间件 Java Linux
消息中间件系列教程(02) -ActiveMQ -安装&入门案例
消息中间件系列教程(02) -ActiveMQ -安装&入门案例
65 0
|
消息中间件 程序员 Apache
阿里RocketMQ创始人首次分享出这份RocketMQ技术内幕神级架构手册
RocketMQ的发展史? RocketMQ的开源正是源于对这种开源文化的认同,开放是为了更好的协同创新,并将这一技术推向新的高度。在经历了阿里巴巴集团内部多年“双11”交易核心链路工业级场景在验证,2016年11月,团队将RocketMQ捐献给全球享有盛誉的Apache软件基金会正式质为孵化项目。 至此,RocketMQ开启了迈向全球顶级开源软件的新征程。
|
消息中间件 存储 负载均衡
工作八年?是高级开发?竟然答不出:如何保证RabbitMQ的高可用?
一个8年工作经验的小伙伴,被问到这样一个问题,说如何保证RabbitMQ的高可用。关于这个问题呢,这位小伙伴倒是有个实操经验,就是不知道如何组织语言。所以,当时面试结果不太理想。今天,我给大家分享一下我的理解。
157 0
|
消息中间件 运维 Kafka
呕心沥血20万字《Kafka运维与实战宝典》免费开放下载了
呕心沥血20万字《Kafka运维与实战宝典》免费开放下载了
|
消息中间件 监控 数据可视化
SpringCloud进阶:一文通透RabbitMQ服务监控
前面我们介绍了通过turbine直接聚合多个服务的监控信息,实现了服务的监控,但是这种方式有个不太好的地方就是turbine和服务的耦合性太强了,针对这个问题,我们可以将服务的监控消息发送到RabbitMQ中,然后turbine中RabbitMQ中获取获取监控消息,这样就实现类服务和turbine的解耦。 我们通过案例来演示下如何实现该效果 一、启动RabbitMQ服务 显然我们需要安装启动一个RabbitMQ服务 二、创建consumer服务 创建一个consumer服务,同时要将dashboard的监控信息发送到RabbitMQ服务中。 1.创建项目
SpringCloud进阶:一文通透RabbitMQ服务监控