生产者发送多个消息到同一个分区的时候,为了减少网络带来的系能开销,kafka会对消息进行批量发送

batch.size
通过这个参数来设置批量提交的数据大小,默认是16k,当积压的消息达到这个值的时候就会统一发送(发往同一分区的消息)
linger.ms
这个设置是为发送设置一定是延迟来收集更多的消息,默认大小是0ms(就是有消息就立即发送)

当这两个参数同时设置的时候,只要两个条件中满足一个就会发送。比如说batch.size设置16kb,linger.ms设置50ms,那么当消息积压达到16kb就会发送,如果没有到达16kb,那么在第一个消息到来之后的50ms之后消息将会发送。
 

重点代码如下:

Properties properties = new Properties();
properties.put(ProducerConfig.BATCH_SIZE_CONFIG, "524288");//增加批次效果,性能更好
properties.put(ProducerConfig.LINGER_MS_CONFIG, 500);//最小等待时长限制,性能更好
properties.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, "lz4");
producer = new KafkaProducer<>(properties,new ByteArraySerializer(),new ByteArraySerializer());

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐