fetch.min.bytes.   #获取最小字节数据
Consumer 向broker中要数据时是按大小来返回的,如果数据没有达到指定的MB,consumer会处于等待状态,直到broker 从producer 哪里获取到指定大小的数据为止。获取取的最小数据大小是指的每个partition上的数据。
fetch.max.wait.ms
当consumer 一直在等待broker的数据达到最小字节数时,如果一直没有达到,consumer是不会一直处于block状态的,会根据fetch.max.wait.ms 设置的时间取结束block 状态。假如说设置fetch.min.bytes 的大小是1m,但是一直没有达到1m,但是到了fetch.max.wait.ms 设置的最大等待时间时会结束掉当前的block状态,有多少数据,获取多少数据。默认值是500ms.
通过这2个参数来控制客户端和服务端的通讯次数,而且还能进行批量作业。
max.partition.fetch.bytes
控制每1个partition最大的字节数。默认是1mb
假如1个topic中有20个partitions,有5个consumer读取partition上的数据,每个consumer只能读取到4M的concumer records.
session.timeout.ms
consumer和broker之间的会话超时时间
假如consumer长时间没有发起poll的信息,没有拿过元数据,并且在session.timeout.ms 的规定时间内,就可以认为客户端超时,如果broker认为consumer超时了会引起consumer 的rebalance,导致其它consmer此时不会收到消息,会将超时的consumer的partition分配给其它的consumer
heartbeat.interval.ms
控制consumer 多长时间发送一次心跳。
因此这2个参数经常放在一起使用,heartbeat.interval.ms 肯定比session.timeout.ms的时间短。一般情况设置心跳的时间是超时时间的1/3 是比较好的。
auto.offset.reset #earliest
自动从最开始的地方读取数据
当一个topic中有数据时,会通过group.id将读到的数据指定到分组中,当有新的分组创建时,可以通过设置该属性从最开始的地方读取数据。如果没有创建新的分组是读取不到数据的
enable.auto.commit
自动提交 #默认是true
当consumer读了多少数据的offset,其实是由client端维护的,client端会将offset提交给broker,然后是由专门的线程自动为我们进行处理的。
假如在读取数据时,程序意外死亡(断电、宕机),它没有来得及提交给broker,会导致下次再次读数据时会读到重复的数据,因为kafka没有记录你最新读取数据的位置,显然这要比你没有读取到数据好的多。所以我们需要的是不管我发送多少次,你只能收到一次,这就牵扯到了幂等性的问题,在后面会介绍。
auto.commit.interval.ms 1000 #设置自动提交时间
partition.assignment.strategy
Partition的分配策略
当consumer读topic中的一个或若干个tipic中partition数据数据时,consumer到底会到哪个partition。在broker中有2个分配策略。1.range 区间 2.roundRobin
1.range 区间
当partition出现奇数据的时候会出现分布不均的情况。
假如有2个topic t1 t2,分别有3个partition,当有2 个consumer时,c1 会被分配到t1下的p1 p2 和c2 下的t1和t2, c2 会被分配到t1 下的p3 和t2 下的p3.这种分配策略是不会将所的的patition分配给一个consumer .这是kafka默认的配置
2.roundRobin
它会提供比range更好的分配策略。
它会根据message 取模的方式将partition 平均的分配给每个topic下面的partition
对于这2种分配策略,你可以自己通过实现接口的方式实现自定义的分配策略。但是通常情况我们是不会重写consumer的分配策略
cliend.id #客户端id
任何合法的string都可以,可以通过这个id在broker查看是哪个客户端发送的信息
max.poll.records #最大获取数据大小
假如我们在feach.min.bytes 中设置最小获取10M的数据,而在这里设置最大获取5M,那么consumer会将
剩下的5M缓存起来,再次调用时会将缓存中的数据返回
receive.buffer.bytes send.buffer.bytes

kafka consumer 的配置(五)的更多相关文章

  1. 【原创】kafka consumer源代码分析

    顾名思义,就是kafka的consumer api包. 一.ConsumerConfig.scala Kafka consumer的配置类,除了一些默认值常量及验证参数的方法之外,就是consumer ...

  2. kafka consumer 配置详解

    1.Consumer Group 与 topic 订阅 每个Consumer 进程都会划归到一个逻辑的Consumer Group中,逻辑的订阅者是Consumer Group.所以一条message ...

  3. 四、 kafka consumer 配置

    consumer配置 #指明当前消费进程所属的消费组,一个partition只能被同一个消费组的一个消费者消费(同一个组的consumer不会重复消费同一个消息) group.id #针对一个part ...

  4. Linux下Kafka单机安装配置方法(图文)

    Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...

  5. Kafka设计解析(五)Kafka性能测试方法及Benchmark报告

    转载自 技术世界,原文链接 Kafka设计解析(五)- Kafka性能测试方法及Benchmark报告 摘要 本文主要介绍了如何利用Kafka自带的性能测试脚本及Kafka Manager测试Kafk ...

  6. Linux下Kafka单机安装配置方法

    Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: •Kafka将消息以topi ...

  7. java架构之路(MQ专题)kafka集群配置和简单使用

    前面我们说了RabbitMQ和RocketMQ的安装和简单的使用,这次我们说一下Kafka的安装配置,后面我会用几个真实案例来说一下MQ的真实使用场景.天冷了,不愿意伸手,最近没怎么写博客了,还请见谅 ...

  8. Kafka设计解析(五)- Kafka性能测试方法及Benchmark报告

    本文转发自Jason’s Blog,原文链接 http://www.jasongj.com/2015/12/31/KafkaColumn5_kafka_benchmark 摘要 本文主要介绍了如何利用 ...

  9. JAVA版Kafka代码及配置解释

    伟大的程序员版权所有,转载请注明:http://www.lenggirl.com/bigdata/java-kafka.html.html 一.JAVA代码 kafka是吞吐量巨大的一个消息系统,它是 ...

随机推荐

  1. 【概率论】3-5:边缘分布(Marginal Distribution)

    title: [概率论]3-5:边缘分布(Marginal Distribution) categories: Mathematic Probability keywords: Marginal p. ...

  2. MONGODB 数据库回复备份

    1.导出工具:mongoexport     1.概念:         mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件.可以通过参数指 ...

  3. nginx安装第三方模块echo-nginx-module

    cd ~ wget -S https://github.com/agentzh/echo-nginx-module/archive/master.zip mv master echo-nginx-mo ...

  4. Ryu控制器编程开发——packet_in和packet_out简易交换机实现

    Ryu控制器二次开发,实现一个简单的只能够简单地广播数据包的交换机. from ryu.base import app_manager from ryu.controller import ofp_e ...

  5. JS函数传递字符串参数(符号转义)

    原文链接:https://blog.csdn.net/Myname_China/article/details/82907965 JS函数传递字符串参数,如果没有转义处理,在接收的时候无法正确的接收字 ...

  6. Flutter用dio封装http网络请求,设置统一的请求地址、headers及处理返回内容

    封装http请求是项目中经常需要做的,常用于设置通用请求地址.请求headers以及处理返回结果,例如在项目中开发地址.测试地址.上线地址是不一样的,当在封装的请求设置好默认地址之后只需要改一个地址而 ...

  7. Windows使用Vagrant&VirtualBox搭建虚拟开发环境

    Vagrant 是一款用来构建虚拟开发环境的工具 , 我们可以通过 Vagrant 封装一个 Linux 的开发环境 , 分发给团队成员 ; 成员可以在自己喜欢的桌面系统 Mac/Windows/Li ...

  8. linux设置脚本开机自启

    由于在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 赋予脚本可执行权限假设/opt/script/ ...

  9. oracle增删改查基本语法(DDL/DML)整理

    DDL:Data Definition Language(数据库定义语言)DML:Data Manipulation Language(数据库操作语言) 一.表结构操作(create table.al ...

  10. Swagger下载的zip文件无法打开,而且大小比直接下载的要大

    以前写的一个rest提供的是浏览器下载zip包的功能,前端界面调用rest可以正常地下载. 今天使用Swagger来调试下载功能时,发现下载的zip包打不开,而且大小也比直接在浏览器中输入rest地址 ...