1.作用
异步 削峰 解耦
2.流程图 + 各组件的介绍
3.交换机类型
3.1direct 根据直接匹配
消息头中的路由键 与 交换机与队列绑定关系中的绑定键 一样时 才 被交换机发送到该队列
3.2fanout
不管 路由键与绑定键 直接发送到 该交换机绑定的所有队列
3.3 topic
消息头中的路由键 与 交换机与队列绑定关系中的绑定键模糊匹配 可以前后模糊都行
小demo图如下
4.客户端上演示
5.代码中实现
下面图片中大致包含了这些东西 :引依赖 添加 主机,端口, 虚拟主机 的配置 使用
rabbitAdmin 创建交换机 队列 建立绑定 发送与 消费消息
消息的序列化形式 需添加配置类 配置 一个 Bean :MessageConvertor 配置成通用json格式(这里没贴图)
6.可靠性投递
这是为了 保证消息在投递到 broker => 交换机成功发送到队列 => 消费者所在服务成功监听到队列
并成功消费 的 三步 详细介绍如下三图
代码 跟 MessageConvertor 一样 写在 我们项目里的MyRabbitConfig类里吧
confirmCallback
一定要把确认消费的模式设置为 手动 默认是自动 自动的话 队列 中消息被消费者取到后 不管 消息是否成功消费 都会 从队列中被移除
模拟只手工确认接收部分消息
可以看到 有三个消息 没被确认接收 在 队列中状态还是ready的 这样消息就不会丢失
然后returnCallback 与 ack这里就不贴图了 到时候直接百度 收
后面啥死信队列在秒杀用到时记录