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的节点进行备份,保证了高可用

相关推荐
6190083363 分钟前
linux 安装jdk
java·linux·运维
懂得节能嘛.6 分钟前
【动态配置中心】Java+Redis构建动态配置中心
java·开发语言·redis
专注于大数据技术栈7 分钟前
Java中JDK、JRE、JVM概念
java·开发语言·jvm
YuanlongWang11 分钟前
C# 基础——值类型与引用类型的本质区别
java·jvm·c#
Kay_Liang35 分钟前
大语言模型如何精准调用函数—— Function Calling 系统笔记
java·大数据·spring boot·笔记·ai·langchain·tools
自由的疯1 小时前
Java 如何学习Docker
java·后端·架构
自由的疯1 小时前
Java Docker本地部署
java·后端·架构
007php0071 小时前
猿辅导Java面试真实经历与深度总结(二)
java·开发语言·python·计算机网络·面试·职场和发展·golang
摇滚侠1 小时前
Spring Boot 3零基础教程,WEB 开发 内容协商机制 笔记34
java·spring boot·笔记·缓存
一勺菠萝丶1 小时前
在 macOS 上用 Docker 为 Java 后端 & 常见开发需求搭建完整服务(详尽教程)
java·macos·docker