kafka笔记4
应用程序使用KafkaConsumer向Kafka订阅主题,并从订阅的主题上接收消息。Kafka消费者从属于消费者群组,一个群组里的消费者订阅的是同一个主题,每个消费者接收主题的一部分分区的消息。
一个分区不能被一个消费者群组里的多个消费者消费,因此如果消费者超过主题的分区数量,那么就有一部分消费者被闲置。
分区的所有权从一个消费者转移到另一个消费者,这样的行为叫做在均衡,不过在均衡期间消费者无法读取消息,造成整个群组一小段时间不可用。
消费者通过被指派为群组协调器的broker发送心跳来维持它们和群组的从属关系以及它们对分区的所有权关系。
在读取消息之前,首先创建一个KafkaConsumer对象,有三个必选属性:bootstrap.servers,key.deserializer,value.deserializer,第四个属性group.id不是必须的,它指定了消费者属于哪个消费者群组。
订阅主题consumer.subscribe()方法,可以指定特定主题,或使用正则表达式。消息轮询是消费者API的核心,通过一个简单的轮询向服务器请求数据。一旦消费者订阅了主题,轮询就会处理所有细节,包括群组协调,分区再均衡,发送心跳和获取数据。
返回的每条数据都包含记录所属主题信息,记录所做分区信息,记录在分区的偏移量,以及记录键值对。
在退出之前使用consume.close()关闭消费者,网络连接和socket也会随之关闭。
我们无法让一个线程运行多个消费者,也无法让多个线程安全共享一个消费者。按照规则,一个消费者使用一个线程。
消费者的配置
1.fetch.min.bytes
该属性指定了消费者从服务器获取记录的最小字节数。
2.fetch.max.wait.ms
指定broker的等待时间,默认是500ms,这个条件和上一个条件哪一个先满足,都会触发broker向消费者发送数据。
3.max.partition.fetch.bytes
该属性指定了服务器从每个分区返回给消费者的最大字节数,默认是1MB.这个数值必须比max.message.size大。
4.session.timeout.ms
该属性指定了消费者在被认为死亡之前可以与服务器断开连接的时间,默认是3秒,如果消费者没有在这个指定时间内发送心跳给群组协调器,就会被认为已经死亡。协调器就会触发在平衡,把它的分区分配给群组的其他消费者。这个属性与heartbeat.interval.ms紧密相关,这个属性指定了消费者可以多久不发送心跳。一般同时修改这两个属性,heartbeat.interval.ms一般是session.timeout.ms的三分之一。
5.auto.offset.reset
该属性指定了消费者在读取一个没有偏移量的分区,或偏移量无效情况下该作何处理,默认值是latest,意思是偏移量无效情况下,消费者从最新记录开始读取数据,另一个值是earliest,意思是从起始位置读取数据。
6.enable.auto.commit
该属性指定了消费者是否自动提交偏移量,默认是true,为了尽量避免重复数据和数据丢失,可以把它设为false,由自己控制何时提交偏移量。
7.partition.assignment.strategy
分区会被分配给群组的消费者,partitionAssignor根据给定消费者和主题,决定哪些分区应该被分配给哪个消费者,有两个默认分配策略:
Range:若干连续分区分配
RoundRobin:逐个分配给消费者
默认是org.apache.kafka.clients.consumer.RangeAssignor,这个类实现了Range策略,也可以改为org.apache.kafka.clients.consumer.RoundRobinAssignor
可以是任意字符串,broker用它标记从客户端发送过来的消息,通常被用在日志,度量指标和配额里。
9.max.poll.records
该属性用于控制单次调用call方法能够返回的记录数量
10.receive.buffer.bytes和send.buffer.bytes
socket读写数据时tcp缓冲区的大小,如果=-1,就使用操作系统默认值。
kafka笔记4的更多相关文章
- Kafka笔记整理(三):消费形式验证与性能测试
Kafka消费形式验证 前面的<Kafka笔记整理(一)>中有提到消费者的消费形式,说明如下: .每个consumer属于一个consumer group,可以指定组id.group.id ...
- Kafka笔记整理(一)
Kafka简介 消息队列(Message Queue) 消息 Message 网络中的两台计算机或者两个通讯设备之间传递的数据.例如说:文本.音乐.视频等内容. 队列 Queue 一种特殊的线性表(数 ...
- Kafka笔记—可靠性、幂等性和事务
这几天很忙,但是我现在给我的要求是一周至少要出一篇文章,所以先拿这篇笔记来做开胃菜,源码分析估计明后两天应该能写一篇.给自己加油~,即使没什么人看. 可靠性 如何保证消息不丢失 Kafka只对&quo ...
- Kafka笔记
最近做的一个项目需要跟Kafka打交道,学习了很多相关知识,就到这里来汇总一下. kafka是一个传递消息的系统,原本是用来快速记录海量log的,现在也经常用作消息队列.它主要由三个部分组成,prod ...
- kafka笔记-Kafka在zookeeper中的存储结构【转】
参考链接:apache kafka系列之在zookeeper中存储结构 http://blog.csdn.net/lizhitao/article/details/23744675 1.topic注 ...
- Kafka笔记--指定消息的partition规则
参数的设定:参考资料 不错的资料:http://blog.csdn.net/honglei915/article/details/37697655 http://developer.51cto.com ...
- Kafka笔记--监控系统KafkaOffsetMonitor
KafkaOffsetMonitor下载链接: http://download.csdn.net/detail/changong28/7930337github官方:https://github.co ...
- Kafka笔记--使用ubuntu为bocker(服务器)windows做producer和comsumer(客户端)
原文连接:http://www.cnblogs.com/davidwang456/p/4201875.html 程序仍然使用之前的一篇博文中的例子 :http://www.cnblogs.com/gn ...
- Kafka笔记--参数说明及Demo
参考资料:http://blog.csdn.net/honglei915/article/details/37563647参数说明:http://ju.outofmemory.cn/entry/119 ...
- Kafka笔记--分布式环境搭建
部署: http://www.cnblogs.com/likehua/p/3999538.html http://blog.csdn.net/kimmking/article/details/8263 ...
随机推荐
- jscript的常用文件操作
作者:朱金灿 来源:http://blog.csdn.net/clever101 1.重命名文件 var fso = new ActiveXObject("Scripting.FileSys ...
- ActiveReports 报告应用程序教程 (2)---上市类报告
大多数数字在报告中系统类报告列表.实例:客户名单.产品列表.设备清单.采购清单.优惠券.商品发票.工作人员清点等..根据报告,查看类别列表相对简单.但,分丰富,在清单类报表中能够增加数据统计.数 ...
- Android app设置全屏模式
Android中,为APP设置全屏模式,主要有如下几种方式: 在manifest中设置 在项目中找到AndroidManifest.xml配置文件,找到Activity所在的节点,添加theme. & ...
- 它们的定义Activity跳转动画
本来觉得是一个非常小的需求, 后来我发现总是 错误, 采用Theme于 4.0在 操作不是很容易使用. 后来查阅资料, 须要在finish 后面 和 startActivity 后面加入 overri ...
- Python经常使用内置函数介绍【filter,map,reduce,apply,zip】
Python是一门非常简洁,非常优雅的语言,其非常多内置函数结合起来使用,能够使用非常少的代码来实现非常多复杂的功能,假设相同的功能要让C/C++/Java来实现的话,可能会头大,事实上Python是 ...
- WPF中制作无边框窗体
原文:WPF中制作无边框窗体 众所周知,在WinForm中,如果要制作一个无边框窗体,可以将窗体的FormBorderStyle属性设置为None来完成.如果要制作成异形窗体,则需要使用图片或者使用G ...
- 【 D3.js 入门系列 --- 9.3 】 弦图生产
我个人的博客: www.ourd3js.com csdn博客为: blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 弦图( Chord ),主要用于表示两个节点之间的联系.例如以下图: ...
- Entity framework 配置文件,实现类,测试类
配置文件信息App.config: 数据库IP地址为192.168.2.186 ,数据库名为 Eleven-Six , 用户名 123456,密码654321 <?xml version=&qu ...
- 2-22-实现jsp通过tomcat连接mysql
所有软件的版本如下: MySQL-Connector-Java: mysql-connector-java-5.1.36 Tomcat: apache-tomcat-8.0.26 JDK: jdk-8 ...
- “Rsync” could not be found on your PATH
Vagrant with VirtualBox on Windows10: “Rsync” could not be found on your PATH 使用agrant安装系统时,遇到的错误提示: ...