org.apache.kafka.clients.CommonClientConfigs#BOOTSTRAP_SERVERS_CONFIG | bootstrap.servers | 配置Kafka 服务器地址信息 | localhost:9092,localhost:9092 |
org.apache.kafka.clients.producer.ProducerConfig#KEY_SERIALIZER_CLASS_CONFIG | key.serializer | 数据传输时Key序列化方式 | 常用官方 org.apache.kafka.common.serialization.StringSerializer 或自定义实现 org.apache.kafka.common.serialization.Serializer接口 |
org.apache.kafka.clients.producer.ProducerConfig#VALUE_SERIALIZER_CLASS_CONFIG | value.serializer | 数据传输时Value序列化方式 | 同key |
org.apache.kafka.clients.producer.ProducerConfig#ACKS_CONFIG | acks | 服务端多少节点保存存后 客户端可以得到相应 | 0 (发送后立即返回消息)/1(默认一个节点保存后 返回消息)/-1 or all (所有节点保存后才返回消息 生产环境不推荐) |
org.apache.kafka.clients.CommonClientConfigs#RETRIES_CONFIG | retries | 针对网络延迟登 可恢复错误的,重试次数 | 设置值>1同时配合 retry.backoff.ms |
org.apache.kafka.clients.CommonClientConfigs#RETRY_BACKOFF_MS_CONFIG | retries | 针对网络延迟登 可恢复错误的,两次重试之间的间隔 | 时间间隔过小或者为0 重试过度 导致服务端性能下降 |
org.apache.kafka.clients.producer.ProducerConfig#BUFFER_MEMORY_CONFIG | buffer.memory | kafka的发送才用异步形式,produce 将消息写到 消息缓存中,单独的一个缓存读取消费信息缓存中信息 buffer.memory 用于设置 缓存的大小 默认 32MB | |
org.apache.kafka.clients.producer.ProducerConfig#COMPRESSION_TYPE_CONFIG | compression.type | 用于消息的压缩 节约消息通讯的网络带宽 | org.apache.kafka.common.record.CompressionType (none 默认不使用/gzip/snappy/lz4/zstd) |
org.apache.kafka.clients.producer.ProducerConfig#BATCH_SIZE_CONFIG | batch.size | producer会把发往同一分区的多条消息封装进一个batch中,当batch满了后,producer才会把消息发送出去。但是也不一定等到满了,这和另外一个参数linger.ms有关。默认值为16K,合计为16384. | 商业环境推荐:batch 越小,producer的吞吐量越低,越大,吞吐量越大。 |
org.apache.kafka.clients.producer.ProducerConfig#LINGER_MS_CONFIG | linger.ms | 该参数指定了生产者在发送批次之前等待更多消息加入批次的时间。KafkaPr oduce 「会在批次填满或linger.ms达到上限时把批次发送出去。默认情况下,只要有可用的线程, 生产者就会把消息发送出去,就算批次里只有一个消息。把linger.ms设置成比0 大的数,让生产者在发送批次之前等待一会儿,使更多的消息加入到这个批次。虽然这样会增加延迟,但也会提升吞吐量(因为一次性发送更多的消息,每个消息的开销就变小了) | |
org.apache.kafka.clients.producer.ProducerConfig#MAX_REQUEST_SIZE_CONFIG | max.request.size | 控制生产者发送消息的大小,它可以指定单个消息的最大值,也可以指定单个请求里所有消息大小的总和。比如1MB,那么单个消息最大大小是1MB,同时如果消息大小是1KB,那么一次可以发送1000条消息。另外broker也有接受消息最大的限制,message.max.bytes。 | 默认1048576字节 生产环境通常设置大些 |
org.apache.kafka.clients.CommonClientConfigs#REQUEST_TIMEOUT_MS_CONFIG | request.timeout.ms | 设置请求延迟时间 | 默认30s |
org.apache.kafka.clients.producer.ProducerConfig#PARTITIONER_CLASS_CONFIG | public 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_CONNECTION | max.in.flight.requests.per.connection | 指定了生产者收到服务器响应之前可以发送多少个消息。它的值越高,将会消耗更多的内存,不过也会提升吞吐量。设置为1,可以保证消息是按照发送的顺序写入服务器。即使发生了重试。 | |
org.apache.kafka.clients.producer.ProducerConfig#INTERCEPTOR_CLASSES_CONFIG | interceptor.classes | 用作拦截器的类List。实现org.apache.kafka.clients.producer.producertinterceptor 接口允许您截取(并可能改变)生产者在发布到kafka集群之前接收到的记录。默认情况下,不存在侦听器。 | |
org.apache.kafka.clients.producer.ProducerConfig#MAX_BLOCK_MS_CONFIG | max.block.ms | 该参数指定了在调用send()方法或使用partitionFor() 方法获取元数据时生产者的阻塞,时间。当生产者的发送缓冲区已满,或者没有可用的元数据时,这些方法就会阻塞。在阻塞时间达到max.block.ms 时,生产者会抛出超时异常配置控制KafkaProducer.send()和KafkaProducer.partitionsFor()将阻塞的时间。这些方法可能被阻塞,因为缓冲区已满或元数据不可用。用户提供的序列化程序或partitioner中的阻塞将不计入此超时。 | |