
kafka 客户端版本有兼容问题,参考
生产者代码:

ack最主要的参数:-1相当于all,表示等待follower回应再继续发消息。保证了ISR列表里至少有一个replica,数据就不会丢失,最高的保证级别。0表示纯异步,不等待,写进socket buffer就继续。1表示leader写进本地log,就返回,不等待follower的回应。
batch.size 每次发送的消息的字节数,批量发送,减少请求,能提升生产者和broker的效率。一个批次请求的数据发往同一个partition。代价是消费内存。
linger.ms 配合batch.size使用,比如batch.size设置很大时,当消息没有到达批量字节设置值时,时间超过linger.ms直接触发,发送。可减少某些情况下的消息发送延迟。
buffer.memory producer可以用来缓存数据的内存大小。
参数详情细节可直接看源码文件ProducerConfig
消费者代码:

例子只有是consume group下一个消费者,后续会单独研究分析下,多消费者分配消费多partion的设计。参数说明:
group.id 消费者所在的消费组,必须指定的参数。kafka设计不符合jms规范,但是他使用consume group的概念实现发布订阅功能。此参数在服务端配置文件consume.property�也可配置
enable.auto.commit 是否自动提交消费唯一offset,自动提交的话
网友评论