Kafka MQ 消费者应用场景

Kafka MQ 消费者应用场景

1 消费者自动提交的时机

在 Kafka 中默认的消费位移的提交方式是自动提交,这个由消费者客户端参数 enable.auto.commit 配置,默认值为 true。当然这个默认的自动提交不是每消费一条消息就提交一次,而是定期提交,这个定期的周期时间由客户端参数 auto.commit.interval.ms 配置,默认值为5秒,此参数生效的前提是 enable.auto.commit 参数为true。在代码清单3-1中并没有展示出这两个参数,说明使用的正是默认值。

在默认的方式下,消费者每隔5秒会将拉取到的每个分区中最大的消息位移进行提交。自动位移提交的动作是在poll(​)方法的逻辑里完成的,在每次真正向服务端发起拉取请求之前会检查是否可以进行位移提交,如果可以,那么就会提交上一次轮询的位移。

2 消息丢失的场景

按照一般思维逻辑而言,自动提交是延时提交,重复消费可以理解,那么消息丢失又是在什么情形下会发生的呢?我们来看下图中的情形。

拉取线程A不断地拉取消息并存入本地缓存,比如在BlockingQueue中,另一个处理线程B从缓存中读取消息并进行相应的逻辑处理。假设目前进行到了第y+1次拉取,以及第m次位移提交的时候,也就是x+6之前的位移已经确认提交了,处理线程B却还正在消费x+3的消息。此时如果处理线程B发生了异常,待其恢复之后会从第m此位移提交处,也就是x+6的位置开始拉取消息,那么x+3至x+6之间的消息就没有得到相应的

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

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

相关文章

Git版本控制系统

Git作为目前最流行的分布式版本控制系统,已经成为开发者必备的技能之一。本文将全面介绍Git的核心概念、基本操作、分支管理以及与GitHub的协作开发,帮助读者从零开始掌握Git的使用。 一、Git概述 1.1 Git发展历史 Git诞生于2005年,由Linu…

如何编译RustDesk(Unbuntu 和Android版本)

编译Linux版本的RustDesk备注:官方文档上,一边都是基于sciter,这个在后面已经不建议使用了,但是依然可以编译刚开始的时候看官方的文档,涉及的东西比较多,也搞的一头雾水,通过B站上一个视频&…

Spring中的循环依赖:解密、破局与架构启示

> 当两个Bean紧紧相拥,Spring容器却陷入死锁——这是Java开发者的经典噩梦 某电商平台凌晨上线时突然宕机,日志里反复滚动着`BeanCurrentlyInCreationException`的报错。经排查,**优惠券服务与库存服务在初始化时相互依赖**,形成致命闭环。这个价值百万的故障案例,揭开…

DataFrame​(数据框)

一种二维表格型数据结构,类似于电子表格(如 Excel)或 SQL 表,由行(记录)​和列(字段)​组成。它是数据分析、机器学习和科学计算中最常用的数据结构之一,尤其在 ​Python…

B站视频评论数据爬取

爬取B站视频评论数据爬取与分析 如果只要单纯的脚本可以直接看项目结构里的b_comments.py 一、技术架构 1、环境配置 Python 3.8PyCharm 2、模块配置 requests:用于发送HTTP请求time:用于处理时间相关的操作csv:用于读写CSV文件json&#xff…

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

一、前言GPT-4o("o"代表"全能")具备处理各种文本、声音和图像资料的能力,能够输出多种格式的文本、声音和图像。GPT-4o 的推出标志着 AI 技术的重大突破。它不再局限于单一媒介,而是首次实现了文本、语音和图…

社交电商推客系统全栈开发指南:SpringCloud+分润算法+Flutter跨端

一、推客系统概述与市场背景推客系统(TuiKe System)是一种基于社交关系的营销推广平台,通过用户分享商品或服务链接,实现裂变式传播和精准营销。近年来,随着社交电商的蓬勃发展,推客系统已成为企业获客的重…

网安-中间件-Redis未授权访问漏洞

目录 Redis Redis持久化 动态修改配置 使用反弹连接的情况 常见监听端口的方式 常见建立反弹连接的方式 流程 Linux crontab cron文件存储路径 利用Redis实现攻击 1.webshell提权案例 2.定时任务shell反弹案例 3.SSH Key getshell案例 ​编辑Redis其他利用方式 …

【c++深入系列】:万字详解栈和队列和deque(附模拟实现的源码)

🔥 本文专栏:c 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 石头能被水滴穿,不是因为水有多强,而是因为它从未停过。 ★★★ 本文前置知识: 模版 栈 那么栈这个…

速通python加密之RSA加密

RSA加密 RSA加密是一种非对称加密算法(与AES等对称加密不同),由罗纳德李维斯特(Ron Rivest)、阿迪萨莫尔(Adi Shamir)和伦纳德阿德曼(Leonard Adleman)于1977年提出&…

Java BeanUtils 类详解:作用、语法与示例

一、BeanUtils 的核心作用BeanUtils 是 Apache Commons 和 Spring Framework 提供的工具类,主要用于简化 JavaBean 的操作。核心功能包括:属性拷贝:对象间同名属性自动复制动态访问:通过字符串名称操作属性类型转换:自…

PyCharm高效开发全攻略

安装与基础配置下载PyCharm专业版或社区版(免费)并完成安装。首次启动时选择默认设置或自定义主题、字体大小等界面偏好。配置Python解释器路径(推荐使用虚拟环境),确保项目依赖隔离。快捷键与导航熟悉核心快捷键能大幅…

Pycharm 给 python 程序打包EXE的配置和方法

前言: Python 语言的设计变得越来越简单,它有很多可以使用的库,所以尤其在人工智能时代,Python语言被广泛应用。但是Python语言和windows系统的兼容性稍微偏弱,如何生成windows可以执行的exe文件。是要一个很复杂的配置过程,本文就会做一个介绍。 本文,通过一个Python…

【Linux | 网络】传输层(UDP和TCP)

目录一、再谈端口号1.1 端口号1.2 端口号的范围划分1.3 常见知名端口号1.4 netstat 命令1.5 进程与端口号的关系1.6 pidof 命令二、UDP协议2.1 UDP协议段格式2.2 如何理解UDP报头和UDP报文2.2.1 UDP报头2.2.2 UDP报文和UDP报文的管理2.2.3 UDP封装过程2.3 UDP的特点2.4 UDP的缓…

mybatisX的自定义模板生成

在idea中使用mybtais的自定义模板生成,可以帮我们省去很多重复的代码。 打开一个项目,我们要修改的主要就两个文件,一个是生成的mapper接口,另一个是xml文件: 相应的mapper接口模板为: package ${mapper…

miniz:一个轻量级、高性能的开源压缩库

目录 1.简介 2.核心特性 3.基本使用示例 4.与 ZLIB 的对比 5.使用场景 6.注意事项 1.简介 miniz 是一个轻量级、高性能的开源压缩库,专注于提供 ZLIB/GZIP 兼容的压缩和解压缩功能。它的核心优势在于体积小巧(单文件实现)、跨平台支持和…

Jenkins接口自动化测试(构建)平台搭建

Python接口自动化测试零基础入门到精通(2025最新版)自动化测试流程 在进行平台搭建前,我们首先要问自己:我需要搭建的平台的功能是什么,要实现什么目标? 在我的理解中,自动化构建平台的执行流…

Day 22: 复习

机器学习数据处理与降维技术复习总结 前言 经过6天的学习,我们系统地学习了从基础的Numpy数组操作到高级的降维算法,这些内容构成了机器学习数据预处理的重要知识体系。本文将对这一系列学习内容进行全面复习和总结,帮助大家建立完整的知识…

力扣 hot100 Day56

46. 全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 //抄的 class Solution { private:vector<vector<int>>result;vector<int> path; public:void backtracking(vector<int>& nu…

Android 编码规范全指南

在 Android 开发领域&#xff0c;代码不仅是功能实现的载体&#xff0c;更是团队协作与项目迭代的基础。一套完善的编码规范&#xff0c;能让代码从 “可运行” 升级为 “易维护、可扩展、低风险”。本文基于 Google、Square 等顶尖团队的实践经验&#xff0c;结合国内 Android…