码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
Kafka系列之:深入理解死信队列和重试队列
Kafka
系列之:深入理解死信队列和重试队列
一、死信队列
二、回退队列
三、深入理解死信队列
四、深入理解重试队列
五、重试队列和延时队列的区别
一、
死信队列
由于某些原因消息无法被正确地投递,为了确保消息不会被无故地丢弃,一般将其置于一个特殊角色的队列,这个队列一般称为私信队列。
后续分析程序可以通过消费这个死信队列中的内容来分析当时遇到的异常情况,进而可以改善和优化系统。
二、回退队列
与死信队列对应的还有一个回退队列的概念,如果消费者在消费时发生了异常那么就不会对这一次消费进行确认,进而发生回滚消息的操作之后,消息始终会放在队列的顶部,然后不断被处理和回滚,导致队列陷入死循环。
为了解决问题,可以为每个队列设置一个回退队列,它和死信队列都是为异常处理提供的一种机制保障。
实际情况下,回退队列的角色可以由死信队列和重试队列来扮演。
三、深入理解死信队列
理解死信队列,关键是要理解死信。死信可以看作消费者不能处理收到的消息,也可以看作消费者不想处理收到的消息,还可以看作不符合处理要求的消息。比如消息内包含的消息内容无法被消费者解析,为了确保消息的可靠性而不被随意丢弃,故将其投递到死信队列中,这里的死信就可以看作消费者不能处理的消息。再比如超过既定的重试次数之后将消息投入死信队列,这里就可以将死信看作不符合处理要求的消息。
四、深入理解重试队列
重试队列其实可以看作一种回退队列,具体指消费端消费消息失败时,为了防止消息无故丢失而重新将消息回滚到broker中。
与回退队列不同的是,重试队列一般分成多个重试等级,每个重试等级一般也会设置重新投敌延时,重试次数越多投递延时就越大。
举个例子:消息第一次消费失败入重试队列Q1,Q1的重新投递延时为5s,5s过后重新投递该消息。如果消息再次消费失败则入重试队列Q2,Q2的重新投递延时为10s,10s过后再次投递该消息,以此类推,重试越多次重新投递的时间就越久,为此还需要设置一个上限,超过投递次数就进入死信队列。
五、重试队列和
延时队列
的区别
重试队列与延时队列有相同的地方,都需要设置延时级别。
区别是:延时队列动作由内部触发,重试队列动作由外部消费端触发。
延时队列作用一次,而重试队列的作用范围会向后传递。
相关阅读:
新版 Ubuntu 中 gnome-terminal 可恶的行间距问题逼我退回了 Ubuntu 20.04
java经典代码
大学生开学需要准备哪些数码产品、五款大学生必买的电子产品
MySQL索引
Git 笔记 - git diff
Netty数据存储分析和经典问题之粘包拆包解决方案
zkSync2.0主网上线在即 先行了解各类zkEVM
基础算法:高精度加法
【面试系列】后端开发工程师 高频面试题及详细解答
多测师肖sir_高级金牌讲师___python之configparser模块
原文地址:https://blog.csdn.net/zhengzaifeidelushang/article/details/126753715
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号