黑马消息队列-rabbitMQ2-生产者重连机制-生产者确认机制-数据持久化-LazyQueue-消费者确认机制-失败重试机制-重试耗尽告警手动处理-

消息的可靠性问题,保证状态一致性

生产者的可靠性

  • 生产者重连
  • 生产者连接失败的失败重试连接
  • 生产者确认
  • 到达交换机后,路由失败,基本不会出现这种情况;
  • 到达交换机后,到达队列;
  • 到达交换机后,到达队列后,持久化;
  • 确认时选异步回调 以下2种配置都要写
  • ConfirmCallback 确认 "消息到交换机";
  • ReturnCallback 确认 "消息从交换机到队列"。
  • 生产确认配置
  • 编写消息成功或失败后的回调函数 ConfirmCallback 确认 "消息到交换机";
  • 实际代码 ConfirmCallback 确认 "消息到交换机";
  • 生产者确定代码 ReturnCallback 确认 "消息从交换机到队列"。
  • 实际代码 ReturnCallback 确认 "消息从交换机到队列"。

MQ的可靠性

  • 数据持久化解决MQ不可靠的问题
  • MQ自动将交换机和队列设置为持久化
  • 消息持久化

  • 消息非持久化和持久化的方式对比
  • 非持久化,会出现阻塞情况
  • 消息持久化的方式

LazyQueue 直接存磁盘,消费时读取到内存

  • 控制台
  • Java代码声明队列
  • 直接存入内存

消费者的可靠性

  • 消费者确认机制
  • 一般只要配置好自动,一旦失败,就会无限次数的重复投递消息;
  • 失败重试机制 , 限制失败次数
  • 如果多次重试仍然失败该怎么办?
  • 重试耗尽后,将失败消息投递到指定交换机
  • 代码实现 创建error交换机,error队列,绑定交换机和队列
  • 这个prefix,name,havingValue里的值,可千万别写错了;

相关推荐
一 乐4 小时前
心理健康管理|基于springboot + vue心理健康管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
jiayong234 小时前
Spring XML解析与BeanDefinition注册详解
xml·java·spring
笃行客从不躺平4 小时前
WeakHashMap 学习
java
木井巳6 小时前
【多线程】并发安全
java·java-ee
源代码•宸12 小时前
分布式缓存-GO(分布式算法之一致性哈希、缓存对外服务化)
开发语言·经验分享·分布式·后端·算法·缓存·golang
It's now12 小时前
Spring AI 基础开发流程
java·人工智能·后端·spring
cxh_陈12 小时前
线程的状态,以及和锁有什么关系
java·线程·线程的状态·线程和锁
计算机毕设VX:Fegn089512 小时前
计算机毕业设计|基于springboot + vue图书商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
R.lin12 小时前
Java 8日期时间API完全指南
java·开发语言·python