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