美文网首页
RabbitMQ零碎整理

RabbitMQ零碎整理

作者: 一眼万年的星空 | 来源:发表于2022-08-13 13:05 被阅读0次

RabbitMQ

概念
MQ:消息队列(消息中间件),开源的基于AMQP协议的消息中间件,异步 解耦 削峰
核心作用:1.异步 2.解耦 3.消息通信
RabbitMQ
消息的类型:1.点对点 2.Worker 3.发布/定义(交换器)
四种交换器:
■1.fanout直接转发
■2.direct路由关键字匹配,精确
■3.topic路由关键字匹配,支持模糊(*和#)
■4.header消息头
RabbitMQ保证消息的可靠性(消息丢失)
原因:
有一定的概率会出现消息丢失
比如:1.消息刚从发送者发送到服务器中,发送者宕机了,在发送的一瞬间,服务器网络异常
2.消费者刚从服务器获取数据,还没获取完,服务器宕机了,或者网络延迟了
3.任何一款的MQ都有可能遇到消息丢失的问题,特别是高并发下
发送端:
要考虑的问题:
1.保证消息发送成功
2.保证服务端接收成功
3.要采用应答模式 发送端和服务端的应答模式
4.需要考虑消息补偿机制
解决方案:
1.消息开启本地持久化 --- 实现消息的落库的处理
2.实现基于延迟的二次确认机制 --- 消息采用2次投递方案,第一次立即执行,第二次间隔执行 采用延迟的模式进行,第二次的投递是为了保证数据的校验。如果存在就不做处理,要是不存在就同步一次
3.RabbitMQ支持消息事务 --- 可以采用事务的模式来处理消息是否成功
消费端:
1.保证消息的获取并应答
结合RabbitMQ的消息应答模式 实现消息消费的应答
2.保证消息过重
每一个消息都有唯一ID,每当消费者获取到消息的时候,先检验此消息有没有被消费过,如果没有再继续进行操作。要是之前消费过,那么就不能再次处理!可以结合Redis
RabbitMQ保证消息幂等性(消息重复)
幂等性:用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。
消息重复
MQ有可能会出现一个消息发送多次,导致消息的重复性
可能出现的场景:1.网络抖动 2.网络闪断 3.端点异常 服务端或者发送端或者消费端
消息出现非幂等性,就会导致消息的重复
解决方案:
1.唯一ID+指纹码
唯一ID 可以使用:雪花算法等等 这种分布式唯一ID生成器
指纹码:就是一段密文,加密规则各不相同
常用:时间戳+随机码+唯一ID+业务ID 采用一定加密技术 进行密文生成
2.基于Redis的原子性实现
Redis的原子性,自增啥的都可以,关键Redis支持集群
为消息设置唯一id,生成唯一id可以用雪花算法,实现去重
RabbitMQ延时队列
延时队列:跟普通队列比起来,多了一个延时的作用
死信消息:就是一个消息的TTL(有效期)结束了,但是消息还未处理,这时这个消息就变为了死信消息
死信队列和延迟消息投递
死信消息的条件:1.拒绝 2.过期 3.队列满了
延迟队列:RabbitMQ没有延迟队列,但是我们可以通过死信消息实现延迟消息投递\

RabbitMQ延时队列


消息的优先级
默认为5,可以通过设置x-max-priority,
MQ集群:1.默认模式 数据存储在其中某一台机器上,在使用的时候,才会进行同步。
2.镜像模式
项目中的应用场景:1.解耦逻辑 2.数据同步(近乎实时)3.延迟队列

青山不改,绿水常流。谢谢大家!!!

相关文章

  • RabbitMQ零碎整理

    RabbitMQ 概念MQ:消息队列(消息中间件),开源的基于AMQP协议的消息中间件,异步 解耦 削峰核心作用:...

  • rabbitmq学习整理

    RabbitMQ简介 整体框图 连接和信道 虚拟主机virtual host Virtual hosts are ...

  • 2018 | 八月日记

    计划 1、开始整理Spring Cloud(docker/RabbitMQ/SpringBootAdmin),并写...

  • RabbitMQ和Kafka思维图总结

    消息队列【RabbitMQ和Kafka】基础概念用思维图整理:

  • Angular 零碎知识整理合集

    我司前端开发的框架是Angular,将日常工作当中用到的Angular零碎知识整理:Angular 零碎知识整理(...

  • SpringBoot整合RabbitMQ——消息的发送和接收

    上篇博文我们整理了RabbitMQ的交换机、队列以及路由绑定等相关知识,并且了解了RabbitMQ是如何发送消息给...

  • RabbitMQ面试那点事儿

    简单的整理RabbitMQ的相关的知识,我们初步了解了RabbitMQ的相关知识,那么我们怎么在我们的工作中使用R...

  • 零碎示例整理

    记录一些遇到的坎,为自己为他人 File 读取Image 不保存 File读取PIL.Image,但不保存到本地。...

  • 零碎知识整理

    2017年01月04日00:20:21 1Byte = 8 Bit(s) ;1Bit是一位 0 / 1 siz...

  • 3.14零碎整理

    2022.03.14 03.15 13:29 一,家 1,恋爱: 可以借他错了磨他,但你错了… 不要派任何代表,自...

网友评论

      本文标题:RabbitMQ零碎整理

      本文链接:https://www.haomeiwen.com/subject/adsqgrtx.html