kafka 设置消费者多线程参数说明

news/2024/11/16 2:24:27/文章来源:https://www.cnblogs.com/liyanbofly/p/18084446
一、设置消费者多线程 参数
  private static final int CONSUMER_THREAD_NUM = 1;//订阅topic Map<String, Integer> topicCountMap = Collections.singletonMap(topic, CONSUMER_THREAD_NUM); Map<String, List<KafkaStream<byte[], byte[]>>> messageStreams = consumerConnector.createMessageStreams(topicCountMap);

1.1 在 Kafka 的旧版 API 中(特别是 0.8 版本及其之前的版本),createMessageStreams 方法用于创建从 Kafka 主题读取数据的消息流。这个方法通常存在于 Kafka 的高级消费者 API 中。

  topicCountMap 参数是一个映射,其键是 Kafka 主题的名称,值是该主题应该有多少个消费者线程或流来消费数据。这通常用于指定每个主题应有多少并发读取线程。
  具体来说,topicCountMap 的作用如下:
  1. 主题的识别:键(Key)是 Kafka 主题的名称。这告诉 Kafka 消费者你想从哪些主题中读取数据。
  2. 并发控制:值(Value)是整数,表示你希望为该主题创建多少个消息流。每个消息流都会有一个单独的消费者线程来读取主题中的消息。例如,如果你为某个主题指定了值 3,那么将会有三个并发的消费者线程读取该主题的消息。
这样做的目的是提高吞吐量。当你有多个分区,并且希望并行地从这些分区读取数据时,你可以为每个分区分配一个或多个消费者线程。但是,请注意,在同一个消费者组中,每个分区只能被一个消费者线程消费,以确保消息的顺序性和不会重复消费。
需要注意的是,随着 Kafka 的发展,新的消费者 API(基于 Java 的 KafkaConsumer 类)已经取代了旧的高级消费者 API。在新的 API 中,消费者组的概念和分区分配策略得到了更好的支持和控制,使得并发消费更加灵活和高效。因此,如果你正在使用较新版本的 Kafka,建议查阅相关文档以了解如何使用新的消费者 API
 
1.2 如果你为某个主题指定了值 3,那么将会有三个并发的消费者线程读取该主题的消息。 是消费一个分区的消息吗
如果你为某个主题在 topicCountMap 中指定了值 3,并不意味着这三个消费者线程将仅消费该主题的一个分区。实际上,这三个消费者线程将尝试消费该主题的所有分区,但具体哪个线程消费哪个分区取决于 Kafka 的分区分配策略。
在 Kafka 中,一个消费者组内的消费者线程会共同消费该组订阅的所有主题的所有分区。每个分区只能由组内的一个消费者线程消费,以确保消息的顺序性和不重复消费。
当你有多个消费者线程在消费者组内时,Kafka 会使用分区分配策略(如 Range 或 RoundRobin)来决定每个消费者线程应该消费哪些分区。这意味着,如果你有 3 个消费者线程,并且主题有 4 个分区,那么可能有两个线程各消费一个分区,而第三个线程消费剩下的两个分区。
因此,为某个主题指定值 3 意味着你希望为该主题启动 3 个消费者线程,并让这些线程共同消费该主题的所有分区。具体每个线程消费哪些分区,则取决于 Kafka 的分区分配策略和当前消费者组的状态
 

 

 

 二、关于kafka 消费者 消费者线程和消费分区说明

  1、 kafka 消费者 设置3个消费线程 ,三个消费者线程将尝试消费该主题的所有分区,每个分区只能由组内的一个消费者线程消费,以确保消息的顺序性和不重复消费,如kafka有3个分区 只有一个消费者但设置3个消费线程那应该每个消费者线程消费一个分区,但不般不这样设置 正常一个消费者设置一个消费线程,一个消费者线程消费这3个分区。
如果想提高消费速度可以在拉取消息 处理业务逻辑时开启多个线程。 
设置消费者线程数量

private static final int CONSUMER_THREAD_NUM = 1;
//订阅topic
Map<String, Integer> topicCountMap = Collections.singletonMap(topic, CONSUMER_THREAD_NUM);Map<String, List<KafkaStream<byte[], byte[]>>> messageStreams = consumerConnector.createMessageStreams(topicCountMap);

 

2、分区分配策略有哪些
  Range(范围)分配策略: 它基于消费者实例的总数和分区的总数进行整除运算,以确保分区尽可能均匀地分配给所有消费者 (默认选择) 
  RoundRobin(轮询)分配策略:RoundRobin策略将消费者组内的所有消费者以及它们所订阅的所有主题的分区按照某种顺序(通常是hashcode)进行排序,然后通过轮询的方式逐个将分区分配给每个消费者
  通过 :partition.assignment.strategy 可以配置分区分配策略
 

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

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

相关文章

Tomcat 原理说明

一、Tomcat 架构图Tomcat 作为java 重要的web服务器,对其原理一直模糊,对其进行整理,下面先对其结构进行了分析,其主要分 连接器和容器1.1 Tomcat 概述Tomcat是依赖于JVM的Java程序,它实现了Servlet和JSP规范,作为容器运行Web应用程序。Tomcat的启动和运行都依赖于JVM来分…

【Pwn】(未解决)maze - writeup

1.运行函数,收集字符串获取关键词字符串:luck 2.寻找字符串引用代码3.生成伪代码4.获得main函数的C语言代码5.分析程序逻辑 check函数:main函数 int __fastcall main(int argc, const char **argv, const char **envp){ unsigned int v3; // edx char v5; // [rsp+23h] [r…

“星光领航”志愿服务队开展“走近科学”支教活动

“星光领航”志愿服务队开展“走近科学”支教活动为激发青少年对科学的兴趣和好奇心,7月23日山东建筑大学机电工程学院“星光领航”志愿服务队在唐官小区开展了以“走近科学”为主题的支教活动。 志愿者们精心设计了丰富多彩的科学课程与实验视频,通过生动的讲解和有趣的互动…

“星光领航”志愿服务队开展探寻“汉字起源”支教活动

“星光领航”志愿服务队开展探寻“汉字起源”支教活动为传承和发扬中华优秀传统文化,为乡村教育的沃土播撒创新与希望的种子,7月19日山东建筑大学机电工程学院“星光领航”志愿服务队入驻唐官小区,开展了一场以探寻汉字源头——甲骨文为主题的支教活动 。 甲骨文,作为中华民…

灰色关联分析的理论介绍

前言 本章会介绍灰色关联分析的理论算法与实际应用,对如何编程实现不加以介绍。其实编程实现也非常简单,就是一些数值计算,再无脑一点可以直接用spsspro来进行计算 目录前言一、灰色关联分析的优势二、灰色关联分析的基本思想三、利用灰色关联分析进行系统分析1.画出统计图进…

第四周进度报告

这周主要学习Java的一些知识,下面是学习笔记:继承中成员变量访问特点:就近原则|System.out.println(name);|从局部位置开始开始往上找| |Sytem.out.println(this.name)|从本类成员变量开始往上找| |Sytem.out.println(super.name)|从父类成员变量开始往上找| package Extends;c…

Win10 安装Bus Hound 后重启失败,启动修复 无法修复你的电脑 日志文件: E:\WINDOWS\System32\LogFiles\Srt\SrtTrail.txt

工作中用到了串口通讯,找到了Bus Hound ,当安装完后提示重启,重启后直接启动失败。 怀疑主要原因是安装了不支持Win10的Bus Hound版本,因为安装Bus Hound后会在系统中添加一个驱动: bhound7.sys,当Windows 启动时加载bhound7.sys驱动失败导致Windows启动失败. 尝试了很多方…

AWR1243+DCA1000——SPI连接失败

问题:近日在使用mmWaveStudio时发现SPI连接失败,而之前都是成功的没动过,这次就是SPI连接失败了。 Status: Failed, Error Type: RADAR INTERFACE ERROR MSS Power Up async event was not received!

Diffutoon下载介绍:真人视频转动漫工具,轻松获得上千点赞

最近在刷短视频的时候,偶尔能看到一些真人转动漫风的作品,看起来给人一种新鲜感,流量都还不错,简简单单跳个舞,就能获得上千个点赞~ 那么,这种视频是怎么制作的? 本期给大家介绍一款AI转绘工具Diffutoon,可以将逼真的视频转换成动画风格,不仅能够处理高分辨率和快速运…

洛谷P1067 [NOIP2009 普及组] 多项式输出

题目链接:- P1067 [NOIP2009 普及组] 多项式输出 题目叙述: [NOIP2009 普及组] 多项式输出 题目描述 一元 n 次多项式可用如下的表达式表示:多项式中自变量为 x,从左到右按照次数递减顺序给出多项式。多项式中只包含系数不为 0 的项。如果多项式 n 次项系数为正,则多项式开…

[VSCode] SSH远程连接服务器总是提示SSH timed out

问题描述 在装有双系统的笔记本上, 在Windows端使用VSCode进行远程连接, 总是出现"SSH timed out"的问题, 而在Windows系统终端使用SSH连接则能连接成功. Linux端则不出现此问题. 问题解决 经排查排除了网络问题和VSCode配置文件的问题; 于是怀疑是Remote - SSH插件的…

BUUCTF 4.ciscn_2019_n_1

拿到题目首先先运行程序我们发现给了我们一个数字,我们猜测应该是一个条件判断的程序,然后我们检查一下保护机制我们发现只开了NX(不可执行)保护,那我们直接看IDA就行了。main函数只是设定了无缓冲模式,以及调用了一个func函数,然后我们看一下我们可以看到gets 和我们想…