Kafka 客户端 Produce 常用配置

2 篇文章 0 订阅

配置

  • KafkaProduce 线程安全
配置类作用demo
org.apache.kafka.clients.CommonClientConfigs#BOOTSTRAP_SERVERS_CONFIGbootstrap.servers配置Kafka 服务器地址信息localhost:9092,localhost:9092
org.apache.kafka.clients.producer.ProducerConfig#KEY_SERIALIZER_CLASS_CONFIGkey.serializer数据传输时Key序列化方式常用官方 org.apache.kafka.common.serialization.StringSerializer 或自定义实现 org.apache.kafka.common.serialization.Serializer接口
org.apache.kafka.clients.producer.ProducerConfig#VALUE_SERIALIZER_CLASS_CONFIGvalue.serializer数据传输时Value序列化方式同key
org.apache.kafka.clients.producer.ProducerConfig#ACKS_CONFIGacks服务端多少节点保存存后 客户端可以得到相应0 (发送后立即返回消息)/1(默认一个节点保存后 返回消息)/-1 or all (所有节点保存后才返回消息 生产环境不推荐)
org.apache.kafka.clients.CommonClientConfigs#RETRIES_CONFIGretries针对网络延迟登 可恢复错误的,重试次数设置值>1同时配合 retry.backoff.ms
org.apache.kafka.clients.CommonClientConfigs#RETRY_BACKOFF_MS_CONFIGretries针对网络延迟登 可恢复错误的,两次重试之间的间隔时间间隔过小或者为0 重试过度 导致服务端性能下降
org.apache.kafka.clients.producer.ProducerConfig#BUFFER_MEMORY_CONFIGbuffer.memorykafka的发送才用异步形式,produce 将消息写到 消息缓存中,单独的一个缓存读取消费信息缓存中信息 buffer.memory 用于设置 缓存的大小 默认 32MB
org.apache.kafka.clients.producer.ProducerConfig#COMPRESSION_TYPE_CONFIGcompression.type用于消息的压缩 节约消息通讯的网络带宽org.apache.kafka.common.record.CompressionType (none 默认不使用/gzip/snappy/lz4/zstd)
org.apache.kafka.clients.producer.ProducerConfig#BATCH_SIZE_CONFIGbatch.sizeproducer会把发往同一分区的多条消息封装进一个batch中,当batch满了后,producer才会把消息发送出去。但是也不一定等到满了,这和另外一个参数linger.ms有关。默认值为16K,合计为16384.商业环境推荐:batch 越小,producer的吞吐量越低,越大,吞吐量越大。
org.apache.kafka.clients.producer.ProducerConfig#LINGER_MS_CONFIGlinger.ms该参数指定了生产者在发送批次之前等待更多消息加入批次的时间。KafkaPr oduce 「会在批次填满或linger.ms达到上限时把批次发送出去。默认情况下,只要有可用的线程, 生产者就会把消息发送出去,就算批次里只有一个消息。把linger.ms设置成比0 大的数,让生产者在发送批次之前等待一会儿,使更多的消息加入到这个批次。虽然这样会增加延迟,但也会提升吞吐量(因为一次性发送更多的消息,每个消息的开销就变小了)
org.apache.kafka.clients.producer.ProducerConfig#MAX_REQUEST_SIZE_CONFIGmax.request.size控制生产者发送消息的大小,它可以指定单个消息的最大值,也可以指定单个请求里所有消息大小的总和。比如1MB,那么单个消息最大大小是1MB,同时如果消息大小是1KB,那么一次可以发送1000条消息。另外broker也有接受消息最大的限制,message.max.bytes。默认1048576字节 生产环境通常设置大些
org.apache.kafka.clients.CommonClientConfigs#REQUEST_TIMEOUT_MS_CONFIGrequest.timeout.ms设置请求延迟时间默认30s
org.apache.kafka.clients.producer.ProducerConfig#PARTITIONER_CLASS_CONFIGpublic static final String PARTITIONER_CLASS_CONFIG = “partitioner.class”;设置分区信息默认org.apache.kafka.clients.producer.internals.DefaultPartitioner自定分区 需要实现org.apache.kafka.clients.producer.Partitioner 接口
org.apache.kafka.clients.producer.ProducerConfig#MAX_IN_FLIGHT_REQUESTS_PER_CONNECTIONmax.in.flight.requests.per.connection指定了生产者收到服务器响应之前可以发送多少个消息。它的值越高,将会消耗更多的内存,不过也会提升吞吐量。设置为1,可以保证消息是按照发送的顺序写入服务器。即使发生了重试。
org.apache.kafka.clients.producer.ProducerConfig#INTERCEPTOR_CLASSES_CONFIGinterceptor.classes用作拦截器的类List。实现org.apache.kafka.clients.producer.producertinterceptor接口允许您截取(并可能改变)生产者在发布到kafka集群之前接收到的记录。默认情况下,不存在侦听器。
org.apache.kafka.clients.producer.ProducerConfig#MAX_BLOCK_MS_CONFIGmax.block.ms该参数指定了在调用send()方法或使用partitionFor() 方法获取元数据时生产者的阻塞,时间。当生产者的发送缓冲区已满,或者没有可用的元数据时,这些方法就会阻塞。在阻塞时间达到max.block.ms 时,生产者会抛出超时异常配置控制KafkaProducer.send()和KafkaProducer.partitionsFor()将阻塞的时间。这些方法可能被阻塞,因为缓冲区已满或元数据不可用。用户提供的序列化程序或partitioner中的阻塞将不计入此超时。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kafka 客户端工具是一种用于与 Kafka 消息队列进行通信和交互的工具。它提供了一系列命令行接口 (CLI) 和 API,可用于在 Kafka 集群中发布、订阅和使用消息。 Kafka 客户端工具具有以下主要功能: 1. 发布消息:可以使用 Kafka 客户端工具将消息发布到 Kafka 集群中的指定主题。可以通过命令行或程序化方式指定消息的内容、主题和其他属性。 2. 订阅消息:可以使用 Kafka 客户端工具从 Kafka 集群中的指定主题订阅消息。可以通过指定消费者组、分区和其他属性来灵活控制订阅行为。 3. 检查主题和分区:可以使用 Kafka 客户端工具查看 Kafka 集群中的所有主题和相应的分区信息。可以检查每个分区的偏移量、副本分布和其他有关分区的元数据。 4. 控制消费者组:可以使用 Kafka 客户端工具管理消费者组。可以列出当前活动的消费者组、查看组内消费者的偏移量以及重置偏移量等操作。 5. 监控和性能测试:Kafka 客户端工具还提供了一些监控工具和性能测试工具,用于监测和调优 Kafka 集群的性能。可以使用这些工具检查消息的产生和消费速率、分区偏移量的变化等。 总之,Kafka 客户端工具是一种便捷的工具,可以帮助开发人员和管理员与 Kafka 集群进行交互,并用于操作和管理消息的发布和订阅。无论是通过命令行还是API,它们都为处理 Kafka 数据流提供了强大的功能和灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值