RabbitMQ
2021-08-21 22:55:04 35 举报
AI智能生成
RabbitMQ
作者其他创作
大纲/内容
消息队列简介
为什么要用MQ
异步
解耦
削峰
消息队列带来的问题
可用性降低
复杂度提高
RabbitMQ简介
基本特性
高可靠
灵活的路由
多客户端支持
集群与扩展性
高可用队列
权限管理
插件系统
与Spring集成
工作模型
Broker(代理/中介)
就是rabbitmq服务,默认端口5672
Connection
生产者和消费者与Broker建立的TCP长连接
Channel
虚拟连接,减少TCP创建和销毁的性能损耗,api编程最主要接口
Queue
队列,存储消息
Exchange
交换机,通过绑定键(Binding Key)与Queue绑定
Vhost
包含Exchange和Queue
路由方式
直连 Direct
绑定键和路由键完全匹配
主题 Topic
# 0 个或者多个单词
* 不多不少一个单词
广播 Fanout
不需要绑定键,发送到所有绑定队列
基本使用
单机安装
java原生api操作
UI管理界面
rabbitmq进阶
TTL
消息过期时间
死信队列
消息什么时候变成死信
消息流转图
延迟队列
TTL+DLX实现
基于延迟队列插件实现
服务端流控
内存控制
磁盘控制
消费端限流
设置channel的prefetch count
Spring AMQP
Spring AMQP介绍
Spring AMQP核心组件
Spring集成RabbitMQ配置文件解读
Spring Boot集成RabbitMQ
配置类代码
生产者代码
消费者代码
参数解析
可靠性投递
消息发送到rabbitmq服务器
Transaction(事务)模式
Confirm(确认)模式
普通确认模式
批量确认模式
异步确认模式
消息从交换机路由到队列
服务端重发给生产者
交换机路由到另一个备份的交换机
消息在队列中存储
队列持久化
交换机持久化
消息持久化
集群
消费者回调
调用生产者Api
发送响应消息给生产者
补偿机制
发送间隔
重发次数
消息幂等性
生成唯一业务ID,日志或者落库
最终一致
对账
消息的顺序性
一个消费者消费一个队列
集群与高可用
为什么要做集群
高可用
负载均衡
集群模式
普通集群
镜像队列
如何支持集群
.erlang.cookie
rabbitmq节点类型
磁盘节点
内存节点
普通集群
镜像集群
高可用
基于 r Docker 安装 y HAproxy 负载d +Keepalived
实践经验总结
资源管理
配置文件与命名规范
对template进一步封装
消息落库+定时任务
生产环境运维监控
日志追踪
如何减少连接数
面试题
消息队列的作用与使用场景?
Channel 和 vhost 的作用是什么?
RabbitMQ 的消息有哪些路由方式?适合在什么业务场景使用?
交换机与队列、队列与消费者的绑定关系是什么样的?
无法被路由的消息,去了哪里?
消息在什么时候会变成 Dead Letter(死信)?
如果一个项目要从多个服务器接收消息,怎么做?如果一个项目要发送消息到多个服务器,怎么做?
RabbitMQ 如何实现延迟队列?
哪些情况会导致消息丢失?怎么解决?哪些情况会导致消息重复?怎么解决?
一个队列最多可以存放多少条消息?
可以用队列的 x-max-length 最大消息数来实现限流吗?例如秒杀场景。
如何提高消息的消费速率?
AmqpTemplate 和 RabbitTemplate 的区别?
如何动态地创建消费者监听队列?
Spring AMQP 中消息怎么封装?用什么转换?
如何保证消息的顺序性?
RabbitMQ 的集群节点类型?
如何保证 RabbitMQ 的高可用?
大量消息堆积怎么办?
MQ 选型分析?
设计一个 MQ,你的思路是什么?
0 条评论
下一页