RabbitMq总结

1.架构

rabbitmq由消费者,生产者,交换机,队列,bindingkey组成,交换机存在四种,主流使用三种

2.事务消息机制

将消息发送到一个单独的事务队列,再从事务队列发送到消费者可消费的队列,若出现问题则回滚,若没有问题则删除事务队列中的消息

通常通过confirm模式来实现

所有在该信道上发布的消息都将会被指派一个唯一的ID(从1开始),一旦消息被投递到所匹配的队列之后;rabbitMQ就会发送一个ACK给生产者(包含消息的唯一ID),这就使得生产者知道消息已经正确到达目的队列了;如果rabbitMQ没能处理该消息,则会发送一个Nack消息给你,你可以进行重试操作。

3.交换机类型

存在四种交换机,其中headers类型使用很少,基本不用

direct交换机会将消息发送至某一队列中,要求绑定的值完全一样

fanout交换机会将消息发送给所有绑定的队列中

topic会将消息发送给绑定了某个关键词的所有队列中,可以模糊匹配

4.持久化方式

只需要在创建队列,交换机的时候加上durable为true的参数即可

5.普通集群模式

rabbit的普通集群模式,会搭建多个mq,相互之间不会同步数据,无法保证高可用,但可以提高并发

6.死信队列和延时队列

死信队列就是创建一个队列,所有的超时,不超过消息都会进入,延时队列通过设置一个ttl,当ttl到达时发出消息,可以通过发送给死信交换机,再由死信交换机发出

7.保证消息的可靠性

消息的可靠性需要保证开启消息持久化,不然宕机消息就丢失了,首先是生产者发送消息的可靠性,mq要保证每一条消息都进行ack应答,而客户端收到了ack应答才继续发送,否则超时重试,当然需要设计接口的幂等性,对于消费者,要消费消息之后进行反馈,当mq收到反馈之后才删除消息

8.rabbitmq可以直连队列,不过不建议,会失去一定的灵活性
9.镜像队列

镜像队列是对于mq的节点进行备份,保证了高可用

相关推荐
wangbing11256 分钟前
平台介绍-主数据系统-同步消息设计
java
小冷coding21 分钟前
【Java】最新Java高并发高可用平台技术选型指南(思路+全栈路线)
java·开发语言
寻星探路1 小时前
【前端基础】HTML + CSS + JavaScript 快速入门(三):JS 与 jQuery 实战
java·前端·javascript·css·c++·ai·html
cyforkk1 小时前
Tomcat 类加载机制解析:为何依赖包必须放在 WEB-INF/lib 目录下
java
JaJian.2 小时前
Java后端服务假死问题排查与解决
java·开发语言
救赎小恶魔2 小时前
C++算法(5)
java·c++·算法
重生之后端学习2 小时前
236. 二叉树的最近公共祖先
java·数据结构·算法·职场和发展·深度优先
Sun_gentle2 小时前
java.lang.RuntimeException: Could not load wrapper properties from ‘C:\Users\
java·开发语言·安卓
笨蛋不要掉眼泪3 小时前
Nacos配置中心详解:核心用法、动态刷新与经典面试题解析
java·数据库·后端
橙露3 小时前
面向对象编程思想:Java 与 Python 的封装、继承与多态对比分析
java·开发语言·python