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

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

生产者的可靠性

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

MQ的可靠性

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

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

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

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

消费者的可靠性

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

相关推荐
木井巳1 小时前
【动态规划: 线性dp】解码方法
java·算法·leetcode·动态规划·推荐算法
宝贝儿好6 小时前
【LLM】第十一章:Agent中间件2:ModelCallLimitMiddleware
中间件
缓慢更新9 小时前
审批的加签与会签:多人意见怎么合
android·java·数据库·低代码·rxjava
yuniko-n10 小时前
【JUC】volatile 非原子性深入解析
java
sun_weitao10 小时前
极简版 MCP 工具实现方案
java·linux·服务器
金銀銅鐵11 小时前
[Java] 展示增删元素时 LinkedList 的内部变化
java·后端·ai编程
布吉岛的石头12 小时前
Java 程序员第 50 阶段3:数据工程:预训练语料清洗与去重
java·开发语言·人工智能·深度学习·transformer
大文说跨境12 小时前
防关联浏览器的指纹覆盖到什么程度:六类参数的实测与自检方法
java·指纹浏览器·tiktok运营
Carol063012 小时前
上肢及肩肘关节
java·服务器·数据库
yliucherish13 小时前
Log4Shell 复现实录:我读 OpenJDK 源码,发现两道防线的默认值竟然相反
java