您的位置:首页 > Web前端

Kafka SimpleConsumer——buffersize?fetchsize?

2017-03-06 10:17 183 查看
感觉网上关于Kafka的资料特别少,在用Kafka0.8.2的low level API的时候遇到了SimpleConsumer和Fetch的初始化的时候碰到了几个size的设置,一直不知道设置对消费的影响:

第一个是初始化SimpleConsumer时候的倒数第二个参数buffersize

SimpleConsumer consumer = new SimpleConsumer(leadBroker, a_port, 100000, 1 * 1024, clientName);
第二个是每次fetch时候设置的最后一个参数fetchSize:

FetchRequest req = new FetchRequestBuilder().clientId(clientName)
.addFetch(a_topic, a_partition, readOffset, 200000)

据我的测试和在stackflow上的查阅,大致明白了,在此记录一下,如果有不正确的地方希望大家可以指正。

stackflow link:Click here!

首先注意到SimpleConsumer初始化时候第三个参数,他是soTimeout,他应该是与指定broker的连接时限,超过了这个时间限制不论有没有fetch到结果都会返回。这里就要说到fetchRequest里面的minbytes属性,它即表示的是一次fetch的数据最少达到多少才返回被消费,如果没有达到这个min值就会一直等待,直到达到了上述soTimeout,无论够不够都会返回。

再说一下fetchSize。经过我的测试,它和一条message的大小有关系,进而影响一次fetch返回的message条数。如果设置的过小,则一次fetch都取不到值。

唯一我不是特别理解的SimpleConsumer的buffersize。在测试中我调大调小他的值,似乎只和读取的速度有关系。据我理解应该这个参数是接收从broker返回来的数据的缓存大小设置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: