spring.rabbitmq.listener.simple.default-requeue-rejected = false 和放入死信队列的区别

目录

一、场景

二、使用 spring.rabbitmq.listener.simple.default-requeue-rejected = false 

2.1 特点

三、 放入死信队列

四、两种区别


一、场景

 当我们使用RabbitMq的时候,我们如果业务中有异常,很有可能造成死循环,因为

  •     在RabbitMQ和Spring AMQP的默认配置下,如果消费者(即这里的receiveMessage方法)在处理消息时抛出了未捕获的异常,RabbitMQ会认为该消息没有被正确地处理,因此会将消息重新放回队列(可能会设置延迟后重新投递,或者立即重新投递,具体行为取决于RabbitMQ的 nack/requeue 策略配置)。
  •     如果您的应用没有配置任何错误处理策略(如死信交换机、最大重试次数等),那么每当此异常发生时,RabbitMQ都会不断尝试重新投递该消息,从而形成了所谓的“死循环”。

例如在监听队列消息的时候,出现异常,造成了死循环。

 

二、使用 spring.rabbitmq.listener.simple.default-requeue-rejected = false 

2.1 特点

  • 当设置为 false 时,消费者在处理消息时如果抛出异常或者主动拒绝(reject)消息,RabbitMQ 不会将该消息重新放回原队列,而是直接丢弃。
  • 这样做的优点是可以立即停止对某个无法正确处理的消息的重试,防止死循环,缺点是可能会导致消息永久丢失,除非有额外的备份机制或者监控措施。

三、 放入死信队列

  • 使用死信队列是一种更复杂的错误处理策略。当消息在一个队列中达到重试上限或者其他触发条件(如TTL过期)时,RabbitMQ会将该消息转移到另一个预设的死信队列中。
  • 在死信队列中的消息不会影响正常消息的流转,同时可以被单独的消费者或流程监控来处理,用于分析失败原因、修复问题或者采取特殊处理(如人工介入)。
  • 此方法允许对失败消息进行二次处理或至少保留失败记录以供追溯,相比于直接丢弃更能保证系统的健壮性和容错性。

四、两种区别

  •  两者的核心区别在于对待处理失败消息的态度:一个是直接放弃,另一个则是保留下来进行后续处理或分析。在实际应用中,通常推荐使用死信队列机制来保证重要消息的安全性和完整性。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/611193.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OJ刷题日记:1、双指针(1)

目录 1、283.移动零 2、1089.复写零 3、202.快乐数 1、283.移动零 题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 …

mysql重启失败

服务器重启了一下,然后启动后发现mysql自动启动没有生效,于是手动通过systemctl启动mysqld,然后就报错:Starting MySQL...........The server quit without updating P[FAILED](/data/mysql/iz2zebvmy1qv3fao9c5riuz.pid). 根据配置my.cnf文…

Mysql内存表及使用场景(12/16)

内存表(Memory引擎) InnoDB引擎使用B树作为主键索引,数据按照索引顺序存储,称为索引组织表(Index Organized Table)。 Memory引擎的数据和索引分开存储,数据以数组形式存放,主键索…

Jmeter-跨线程传参(正则提取多个参数、jsonpath提取器)

目的: 当前接口请求的参数依赖于其他请求,且两个请求不是在同一个线程组时就会用到该方法进行跨线程组传参。 实际使用场景: 多个线程组的请求都依赖登录接口,但是登录接口仅执行一次。 实现方法: 以下举例的有正…

信息系统项目管理师——第22章组织通用治理

本章在第三版战略管理的基础上新增了2节内容,从2023年上半年的考情来看来 选择题,考1分左右,知识点比较分散,刷下题,考前突击下即可。 案例题,不考。 论文题,不考。 1组织战略 组织战略体现了…

电力综合自动化系统对电力储能技术的影响有哪些?

电力综合自动化系统对电力储能技术的影响主要体现在以下几个方面: 提高能源利用效率:电力综合自动化系统通过优化调度和能量管理,可以实现储能设备的有效利用,提高能源利用效率。在电力系统中,储能设备可以有效地平抑风…

Web App 入门指南:构建预测模型 App 的利器(shiny)

Web App 入门指南:构建预测模型 App 的利器 简介 近年来,随着机器学习和人工智能技术的快速发展,预测模型在各行各业得到了广泛应用。为了方便地部署和使用预测模型,将模型构建成 Web App 是一种非常好的选择。Web App 无需下载…

StylizedGS: Controllable Stylization for 3D Gaussian Splatting

StylizedGS: Controllable Stylization for 3D Gaussian Splatting StylizedGS:3D高斯溅射的可控样式化 Dingxi Zhang, Zhuoxun Chen, Yu-Jie Yuan, Fang-Lue Zhang, Zhenliang He, Shiguang Shan, and Lin Gao1 张定西,陈卓勋,袁玉洁&#x…

大日志精选案例七:徐州公交集团数字化转型中的日志审计优化实践

**> “城市公共交通作为民生重要基础设施,其安全与效率至关重要。聚铭的大日志方案,如同为公交系统装上了‘智慧眼’,提供了全方位的日志可见性,使我们能够全面、深入地了解公交系统的运行状况。日志中详细记录的各项操作、事件…

服务器感染了.rmallox勒索病毒,如何确保数据文件完整恢复?

引言: 随着网络技术的发展,勒索病毒已经成为当今数字时代的一大威胁。近期出现的.rmallox勒索病毒更是引发了广泛关注。本文将深入探讨.rmallox勒索病毒的特点,并提供一系列应对这一威胁的高效策略。如果受感染的数据确实有恢复的价值与必要…

libVLC 视频界面分割

先看看分割后的界面吧,根据分割的数量,来分割视频画面。 其实视频界面分割很简单,看过叠加窗口的这篇文章,不难理解,如何分割。 libVLC 视频窗口上叠加透明窗口-CSDN博客 如果还是不懂的话,我讲解一下原理…

什么是智能组网?

智能组网已经成为现代社会中网络通信的重要技术。智能组网通过建立高效的网络连接,实现设备之间的信息传输和远程通信。它在不同地区的电脑与电脑、设备与设备、电脑与设备之间搭建了桥梁,极大地提升了信息传递的效率和便捷性。 天联是一种智能组网技术&…