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

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

生产者的可靠性

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

MQ的可靠性

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

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

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

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

消费者的可靠性

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

相关推荐
香菜TTT4 小时前
Redis的哨兵机制
java·数据库·redis
小lu飞4 小时前
DeepSeek Flash 降价的技术账本:缓存友好型定价如何改写推理成本结构
缓存
withoutfear4 小时前
IntelliJ IDEA卡顿内存分配不足和索引被频繁触发问题解决办法
java·ide·intellij-idea
大圣编蚕4 小时前
Java StringWriter 详解:从入门到实战
java·开发语言·python
老苗项目实战5 小时前
Java工程师高频面试题(基于近一年的真实面试记录整理)
java·开发语言·面试·预见猿份·老苗项目实战
陈皮波比茶5 小时前
分布式任务调度xxl-job
java·分布式
XiaoYu1__6 小时前
JavaGUI文件管理系统开发实战:从静态展示到动态交互的演进
java·开发语言
霸道流氓气质6 小时前
MCP(Model Context Protocol)核心概念与Java SDK集成
java·开发语言
hweiyu006 小时前
Redis命令:APPEND
redis·缓存
敲代码的嘎仔6 小时前
从集群锁失效到异步领券:我用分布式锁 + Redisson + MQ 把领券接口 RT 从 200ms 压到 15ms
java·数据库·redis·分布式·缓存·ai·wpf