当前位置: 首页 > article >正文

rabbitMq两种消费应答失败处理方式

在rabbitMq消费端,有三种应答模式:

none:不处理。即消息投递给消费者后立刻 ack 消息会立刻从MQ删除。非常不安全,不建议使用
manual:手动模式。需要自己在业务代码中调用api,发送 ack 或 reject,存在业务入侵,但更灵活
auto:自动模式。SpringAMQP利用AOP对我们的消息处理逻辑做了环绕增强,当业务正常执行时则自动返回 ack 。当业务出现异常时,根据异常判断返回不同结果:
如果是业务异常,会自动返回 nack
如果是消息处理或校验异常,自动返回 reject

none基本用不到,在这不做讨论

一、auto模式(默认模式),这种是在配置文件中直接设置参数进行处理。

#应答模式 手动应答需要开发者手动应答
spring.rabbitmq.listener.simple.acknowledge-mode=AUTO
 
#批量预抓取数量,提高执行效率
spring.rabbitmq.listener.simple.prefetch = 10
#开启消费者重试机制
spring.rabbitmq.listener.simple.retry.enabled = true
#重试的最大次数
spring.rabbitmq.listener.simple.retry.max-attempts = 6
#重试间隔时间
spring.rabbitmq.listener.simple.retry.initial-interval = 3000
#重试间隔倍数,默认值是1
spring.rabbitmq.listener.simple.retry.multiplier = 2
#最大间隔时间,默认值是10s
spring.rabbitmq.listener.simple.retry.max-interval = 15000

消费时,会按照参数进行重试,如果达到最大重试次数还没有成功,会丢弃掉消息。

如果在消费时还没走完整个方法而停止整个服务,则在重新启动服务时会重新消费这个消息。

二、manual手动应答,此配置下,上面配置文件设置的重试参数都不会生效,需要特别注意。

1、手动应答模式需要用户自己决定消息是丢弃或者重新放回队列,还可以结合死信队列对消息进行重试处理。

2、手动应答中两个重要方法basicAck、basicNack

channel.basicAck(long deliveryTag, boolean multiple);

channel.basicNack(long deliveryTag, boolean multiple, boolean requeue) ;

手动模式 若消息没成功消费时,若给队列拒绝(basicNack),则会进入死循环,若不给拒绝(不进行basicAck) 抛出异常(重试机制生效) 则消息会堆积在队列中,后续投递的消息也会堆积并不会被消费


http://www.kler.cn/a/417067.html

相关文章:

  • 智能化Kubernetes管理:AI与ChatGPT提升运维效率的创新实践
  • Day31 贪心算法 part05
  • Next.js-样式处理
  • 卸载snap docker一直卡住:Save data of snap “docker“ in automatic snapshot set #3
  • [论文阅读]Poisoning Retrieval Corpora by Injecting Adversarial Passages
  • win10系统安装docker-desktop
  • 制作苹果IOS.APP所使用步骤和方法-有步骤视情况待完善
  • 三维渲染中顺序无关的半透明混合(OIT)(二——Stencil Route)
  • 电脑文件自动提取器介绍
  • WEB攻防-通用漏洞XSS跨站绕过修复http_onlyCSP标签符号
  • 计算机毕业设计Python异常流量检测 流量分类 流量分析 网络流量分析与可视化系统 网络安全 信息安全 机器学习 深度学习
  • 家校通小程序实战教程04教师管理
  • 【DB】根据某字段生成序号
  • 一万台服务器用saltstack还是ansible?
  • 倍思无线蓝牙耳机测评:“静”只是它的闪光点之一!
  • Doge东哥wordpress主题
  • 爬虫XPath相关
  • Android笔记(三十四):封装带省略号图标结尾的TextView
  • 电机瞬态分析基础(6):坐标变换(续)
  • 从0到1搭建webpack
  • ESLint 配置文件全解析:格式、层叠与扩展(3)
  • 将大模型指令微调数据从parquet转为json格式
  • 大数据新视界 -- Hive 与其他大数据工具的集成:协同作战的优势(上)(13/ 30)
  • Flink随笔 20241129 流数据处理:以生产线烤鸡为例理解 Flink
  • Socket编程(TCP/UDP详解)
  • Windows 平台使用 podofo.dll 异常,需要安装一下库:Win64OpenSSL_Light-3_3_2.msi