kafka-批量发送

生产者发送多个消息到同一个分区的时候,为了减少网络带来的系能开销,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());

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
对于 Kafka批量写入,可以使用 Kafka 生产者 API 提供的批量发送功能来实现。以下是一个示例代码,演示如何使用 Kafka 生产者批量写入消息: ```java import org.apache.kafka.clients.producer.*; import org.apache.kafka.common.serialization.StringSerializer; import java.util.ArrayList; import java.util.List; import java.util.Properties; public class KafkaBatchProducerExample { public static void main(String[] args) { // Kafka 服务器地址 String bootstrapServers = "localhost:9092"; // 配置生产者属性 Properties properties = new Properties(); properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); properties.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); properties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); // 创建 Kafka 生产者 KafkaProducer<String, String> producer = new KafkaProducer<>(properties); // 创建消息列表 List<ProducerRecord<String, String>> records = new ArrayList<>(); // 添加消息到列表 records.add(new ProducerRecord<>("topic1", "message1")); records.add(new ProducerRecord<>("topic1", "message2")); records.add(new ProducerRecord<>("topic1", "message3")); // 批量发送消息 producer.send(records, new Callback() { @Override public void onCompletion(RecordMetadata metadata, Exception exception) { if (exception == null) { System.out.println("消息发送成功:" + metadata.topic() + "-" + metadata.partition() + "-" + metadata.offset()); } else { System.out.println("消息发送失败:" + exception.getMessage()); } } }); // 关闭 Kafka 生产者 producer.close(); } } ``` 在这个示例中,我们首先创建了一个 Kafka 生产者,并设置了服务器地址和序列化器。然后,我们创建了一个消息列表,并将要发送消息添加到列表中。最后,通过调用 `producer.send()` 方法来批量发送消息。在发送完成后,可以通过回调函数来处理发送结果。 需要注意的是,在实际使用中,你需要根据你的 Kafka 集群和消息的数据类型进行相应的配置和处理。这只是一个简单的示例,供参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码者人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值