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
目录
相关文章
|
6月前
|
消息中间件 监控 大数据
Kafka消息队列架构与应用场景探讨:面试经验与必备知识点解析
【4月更文挑战第9天】本文详尽探讨了Kafka的消息队列架构,包括Broker、Producer、Consumer、Topic和Partition等核心概念,以及消息生产和消费流程。此外,还介绍了Kafka在微服务、实时数据处理、数据管道和数据仓库等场景的应用。针对面试,文章解析了Kafka与传统消息队列的区别、实际项目挑战及解决方案,并展望了Kafka的未来发展趋势。附带Java Producer和Consumer的代码示例,帮助读者巩固技术理解,为面试做好准备。
609 0
|
1月前
|
消息中间件 存储 Java
一览纵山小,原来RocketMQ是这样工作的!
本文介绍了阿里巴巴开源的高性能分布式消息队列系统RocketMQ的核心组件及其作用。RocketMQ拥有四个关键组件:NameServer、Broker、Producer和Consumer。NameServer作为注册中心维护路由信息;Broker负责消息的接收、存储和转发;Producer生成消息并通过Topic与Broker关联;Consumer则订阅并处理消息。文章详细解析了各组件的功能及交互逻辑,并展示了RocketMQ在异步通信、日志收集、流处理及事件驱动架构中的典型应用场景。通过整体框架的梳理,有助于读者更好地理解和掌握RocketMQ的工作机制。
39 4
|
消息中间件 存储 网络协议
从原理到实战,手把手教你在项目中使用RabbitMQ
RabbitMQ 的文章之前写过,但是当时给的示例是 Demo 版的,这篇文章主要是结合之前写的理论知识,将 RabbitMQ 集成到技术派项目中。 话不多说,上文章目录: 下面我们先回顾一下理论知识,如果对这块知识已经清楚的同学,可以直接跳到实战部分。 1. 消息队列 1.1 消息队列模式 消息队列目前主要 2 种模式,分别为“点对点模式”和“发布/订阅模式”。 点对点模式 一个具体的消息只能由一个消费者消费,多个生产者可以向同一个消息队列发送消息,但是一个消息在被一个消息者处理的时候,这个消息在队列上会被锁住或者被移除并且其他消费者无法处理该消息。 需要额外注意的是,如果消费者
621 5
|
4月前
|
消息中间件 Kafka 程序员
彻底搞懂Kafka生产消费流程,这篇文章就够了!
```markdown 🚀 Kafka 生产消费流程揭秘:Producer 创建守护线程Sender,消息经拦截器→序列化器→分区器→缓冲区。批量发送基于batch.size或linger.ms条件。acks参数控制可靠性,从0(最快但不可靠)到all(最可靠)。消息重试和元数据返回确保不丢失。关注“软件求生”公众号,探索更多技术! ```
152 1
|
6月前
|
消息中间件 存储 负载均衡
精华推荐 | 【深入浅出 RocketMQ原理及实战】「底层源码挖掘系列」透彻剖析贯穿RocketMQ的消费者端的运行核心的流程(上篇)
精华推荐 | 【深入浅出 RocketMQ原理及实战】「底层源码挖掘系列」透彻剖析贯穿RocketMQ的消费者端的运行核心的流程(上篇)
56 1
|
6月前
|
消息中间件 Prometheus 监控
探秘RabbitMQ:社区插件与扩展的奇妙世界【RabbitMQ 三】
探秘RabbitMQ:社区插件与扩展的奇妙世界【RabbitMQ 三】
206 0
|
6月前
|
消息中间件 Kafka Linux
初尝Kafka(二):搭建环境
初尝Kafka(二):搭建环境
62 1
|
消息中间件 存储 负载均衡
工作八年?是高级开发?竟然答不出:如何保证RabbitMQ的高可用?
一个8年工作经验的小伙伴,被问到这样一个问题,说如何保证RabbitMQ的高可用。关于这个问题呢,这位小伙伴倒是有个实操经验,就是不知道如何组织语言。所以,当时面试结果不太理想。今天,我给大家分享一下我的理解。
152 0
|
消息中间件 存储 网络协议
|
消息中间件 运维 Kafka
呕心沥血20万字《Kafka运维与实战宝典》免费开放下载了
呕心沥血20万字《Kafka运维与实战宝典》免费开放下载了