【kafka系列】消费者
目录
获取消息
1. 消费者获取消息的流程逻辑分析
阶段一:消费者初始化
阶段二:分区分配与重平衡(Rebalance)
阶段三:消息拉取与处理
阶段四:偏移量提交
核心设计思想
2. 流程
关键点总结
常见参数
一、核心必填参数
二、消费者组与重平衡参数
三、消息拉取与处理参数
四、偏移量(Offset)提交参数
五、错误处理与容错参数
六、高级配置
获取消息
1. 消费者获取消息的流程逻辑分析
Kafka 消费者通过 消费者组(Consumer Group) 协作消费消息,核心流程分为 初始化、分区分配、消息拉取、偏移量提交 四个阶段:
阶段一:消费者初始化
- 订阅 Topic
-
- 消费者通过
consumer.subscribe()订阅一个或多个 Topic。 - 若消费者属于同一消费者组,组内消费者会均分 Topic 的分区。
- 消费者通过
- 加入消费者组
-
- 消费者启动时向 Broker 发送
JoinGroup请求,加入消费者组。 - 若消费者是组内第一个成员,会被选举为 Leader 消费者,负责分区分配。
- 消费者启动时向 Broker 发送
阶段二:分区分配与重平衡(Rebalance)
- 分区分配策略
-
- Leader 消费者根据策略(如
RangeAssignor或RoundRobinAssignor)分配分区。 - 分配结果通过
SyncGroup请求同步给所有消费者。
- Leader 消费者根据策略(如
- 重平衡触发条件
-
- 消费者加入或离开组。
- Topic 的分区数量变化。
- 消费者心跳超时(默认
session.timeout.ms=45s)。
阶段三:消息拉取与处理
- 拉取消息
-
- 消费者向分区的 Leader Broker 发送
FetchRequest,从当前偏移量(Offset)拉取消息。 - 关键配置:
- 消费者向分区的 Leader Broker 发送
-
-
max.poll.records:单次拉取最大消息数(默认 500)。fetch.min.bytes:最小拉取数据量(默认 1B,优先吞吐量时可调大)。
-
- 处理消息
-
- 用户通过
ConsumerRecords处理消息,需在max.poll.interval.ms(默认 5分钟)内完成,否则触发重平衡。
- 用户通过
阶段四:偏移量提交
- 提交 Offset
-
- 自动提交:由消费者线程周期性提交(
enable.auto.commit=true,默认 5秒)。 - 手动提交:用户调用
commitSync()或commitAsync()精确控制。 - Offset 存储在 Kafka 内部 Topic
__consumer_offsets中。
- 自动提交:由消费者线程周期性提交(
核心设计思想
- 负载均衡:通过消费者组实现分区并行消费。
- 容错性:心跳机制检测消费者存活,重平衡保障分区重新分配。
- 至少一次语义:Offset 提交后移,确保消息至少被消费一次。
2. 流程

关键点总结
- 重平衡机制:保障消费者组动态扩展和容错。
- Offset 管理:通过提交 Offset 实现消费进度持久化。
- 消息拉取优化:通过
fetch.min.bytes和max.poll.records平衡吞吐与延迟。 - 超时控制:
session.timeout.ms和max.poll.interval.ms防止消费者僵死
常见参数
一、核心必填参数
| 参数名 | 默认值 | 说明 |
|
| 无 | Kafka 集群地址列表(逗号分隔,如 )。 |
|
| 无 | 消费者组 ID(同一组内的消费者共享分区负载)。 |
|
| 无 | Key 的反序列化类(如 )。 |
|
| 无 | Value 的反序列化类(同上)。 |
二、消费者组与重平衡参数
| 参数名 | 默认值 | 说明 |
|
|
(45秒) | 消费者与 Broker 的心跳超时时间,超时触发重平衡。 |
|
|
(3秒) | 消费者发送心跳的间隔时间(需小于 的 1/3)。 |
|
|
(5分钟) | 两次 调用的最大间隔时间,超时触发重平衡。 |
|
|
| 分区分配策略(如 、 )。 |
三、消息拉取与处理参数
| 参数名 | 默认值 | 说明 |
|
|
(1字节) | 单次拉取的最小数据量(Broker 等待足够数据后返回,提升吞吐量)。 |
|
|
(50MB) | 单次拉取的最大数据量(需小于 Broker 的 )。 |
|
|
| 单次 返回的最大消息数(避免内存溢出)。 |
|
|
(1MB) | 单分区单次拉取的最大数据量。 |
四、偏移量(Offset)提交参数
| 参数名 | 默认值 | 说明 |
|
|
| 是否自动提交 Offset(建议设为 ,手动提交确保精确控制)。 |
|
|
(5秒) | 自动提交 Offset 的时间间隔( 时生效)。 |
|
|
| 无初始 Offset 时的策略:<br>- :从最早消息开始。<br>- :从最新消息开始。 |
五、错误处理与容错参数
| 参数名 | 默认值 | 说明 |
|
|
| 事务消息隔离级别:<br>- :仅读取已提交的事务消息。 |
六、高级配置
| 参数名 | 默认值 | 说明 |
|
| 无 | 客户端标识(用于监控和日志)。 |
|
|
(9分钟) | 空闲连接超时时间(Broker 主动关闭超时连接)。 |
|
|
(30秒) | 消费者等待 Broker 响应的超时时间。 |
相关文章:
【kafka系列】消费者
目录 获取消息 1. 消费者获取消息的流程逻辑分析 阶段一:消费者初始化 阶段二:分区分配与重平衡(Rebalance) 阶段三:消息拉取与处理 阶段四:偏移量提交 核心设计思想 2. 流程 关键点总结 常见参数…...
HackerRank C++面试,中等难度题目 - Attribute Parser
去除字符串首尾的空白字符(包括空格、制表符、换行符和回车符) void trim(string &s) {size_t start s.find_first_not_of(" \t\n\r");size_t end s.find_last_not_of(" \t\n\r");if (start string::npos) {s ""…...
【ARM】解决ArmDS Fast Models 中部分内核无法上电的问题
1、 文档目标 解决ArmDS Fast Models 中部分内核无法上电的问题。 2、 问题场景 在调用ArmDS的Fast Models中的Cortex-A55的模型,只有Core 0是上电状态,而Core 1处于掉电状态,如图2-1所示: 图2-1 3、软硬件环境 1)…...
节目选择器安卓软件编写(针对老年人)
文章目录 需求来源软件界面演示效果源码获取 对爬虫、逆向感兴趣的同学可以查看文章,一对一小班教学:https://blog.csdn.net/weixin_35770067/article/details/142514698 需求来源 由于现在的视频软件过于复杂,某客户想开发一个针对老年人、…...
蓝桥杯之图
图: 对于图来说,重点在于之后的最短路径算法,这边简单做一下了解即可 代码: #include<iostream> #include<string> #include<vector> #include<list> #include<queue> using namespace std; clas…...
中兴光猫修改SN,MAC,修改地区,异地注册,改桥接,路由拨号
前言 请先阅读上一篇博客获取到光猫超级密码电信光猫获取超级密码 电信光猫天翼网关4.0获取超级密码教程 四川电信光猫 中兴 F1855V2 ZXHN F1855V2 telent权限 实战 实测_天翼4.0光猫超级密码-CSDN博客 修改SN-修改地区,光猫异地注册,设置桥接模式&#…...
【kafka系列】Kafka如何保证消息不丢失?
目录 1. 生产者端:确保消息成功发送到Broker 核心机制: 关键步骤: 2. Broker端:持久化与副本同步 核心机制: 关键源码逻辑: 3. 消费者端:可靠消费与Offset提交 核心机制: 关…...
AtCoder Beginner Contest 393 —— E - GCD of Subset 补题 + 题解 python
AtCoder Beginner Contest 393 E - GCD of Subset Problem Statement You are given a sequence A ( A 1 , A 2 , … , A N ) A (A_1, A_2, \dots, A_N) A(A1,A2,…,AN) of length N N N and a positive integer K K K (at most N N N). For each i 1 , 2 , … …...
vue3响应式丢失解决办法(三)
vue3的响应式的理解,与普通对象的区别(一) vue3 分析总结响应式丢失问题原因(二) 经过前面2篇文章,知道了响应式为什么丢失了,但是还是碰到了丢失情况,并且通过之前的内容还不能解…...
BY组态:构建灵活、可扩展的自动化系统
引言 在现代工业自动化领域,BY组态(Build Your Own Configuration)作为一种灵活、可扩展的解决方案,正逐渐成为工程师和系统集成商的首选。BY组态允许用户根据具体需求自定义系统配置,从而优化生产效率、降低成本并提…...
2025 (ISC)²CCSP 回忆录
2025.1.20 广州,周一,我一次性通过了CCSP的考试。 为什么要考证? 个人成长所需 职业热情:做一行爱一行,既然我投入了美好的青春年华到网络安全行业当中,那么对于这个行业最有权威的认证,是肯定…...
强化学习笔记7——DDPG到TD3
前提:基于TD 的方法多少都会有高估问题,即Q值偏大。原因两个:一、TD目标是真实动作的高估。 二:自举法高估。 DDPG 属于AC方法:异策略,适合连续动作空间,因为他的策略网络直接输出的动作&#…...
win10 系统 自定义Ollama安装路径 及模型下载位置
win10 系统 自定义Ollama安装路径 及模型下载位置 由于Ollama的exe安装软件双击安装的时候默认是在C盘,以及后续的模型数据下载也在C盘,导致会占用C盘空间,所以这里单独写了一个自定义安装Ollama安装目录的教程。 Ollama官网地址࿱…...
-bash:/usr/bin/rm: Argument list too long 解决办法
问题概述 小文件日志太多导致无法使用rm命令,因为命令行参数列表的长度超过了系统允许的最大值。 需要删除/tmp目录下的所有文件,文件数量比较多。 ls -lt /tmp | wc -l 5682452 解决方法如下: 使用find -exec 遍历,然后执行删…...
内容中台重构企业内容管理流程驱动智能协作升级
内容概要 内容中台作为企业数字化转型的核心基础设施,通过技术架构革新与功能模块整合,重构了传统内容管理流程的底层逻辑。其核心价值在于构建动态化、智能化的内容生产与流转体系,将分散的创作、存储、审核及分发环节纳入统一平台管理。基…...
python实现YouTube关键词爬虫(2025/02/11)
在当今数字化时代,YouTube作为全球最大的视频分享平台之一,拥有海量的视频资源。无论是进行市场调研、内容创作还是学术研究,能够高效地获取YouTube上的相关视频信息都显得尤为重要。今天,我将为大家介绍一个基于Python实现的YouT…...
【效率技巧】怎么做思维导图||数学思维||费曼学习法
目录标题 常见问题:认知误区和建议:思维导图按照功能分类思维导图好处步骤(拆解的步骤) 常见问题: 1、做好的思维导图浪费时间 2、做简单的思维导图没有效果 认知误区和建议: 1、做思维导图工具…...
LabVIEW与USB设备开发
开发一台USB设备并使用LabVIEW进行上位机开发,涉及底层驱动的编写、USB通信协议的实现以及LabVIEW与设备的接口设计。本文将详细介绍如何开发USB设备驱动、实现LabVIEW与USB设备的通信以及优化数据传输,帮助用户顺利完成项目开发。下面是一个详细的说明&…...
动态规划LeetCode-416.分割等和子集
给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和 [11] 。 示例 2&…...
云原生(五十五) | ECS中自建数据库迁移到RDS
文章目录 ECS中自建数据库迁移到RDS 一、场景说明 二、ECS中自建数据库迁移到RDS实现步骤 三、 创建wordpress数据库 四、登录ECS导出wordpress数据库 五、返回RDS数据库管理控制台 六、开启外网地址并设置白名单 七、获取RDS外网访问地址 八、重新设置wordpress的wp-…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
ui框架-文件列表展示
ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...
