Kafka生产者关键配置参数分类及说明
host1:port1,host2:port2),用于生产者初始化时建立与集群的连接。建议配置至少2个Broker地址,避免单点故障。org.apache.kafka.common.serialization.StringSerializer),用于将Key对象转换为字节数组。必须与Broker端配置一致,否则会导致反序列化失败。org.apache.kafka.common.serialization.StringSerializer),功能同key.serializer,用于Value对象的序列化。0(不等待,性能最高但可能丢失数据)、1(等待Leader副本确认,默认,平衡可靠性与性能)、all(等待所有ISR副本确认,可靠性最高)。0,即不重试)。建议设置为Integer.MAX_VALUE(无限重试),并结合delivery.timeout.ms(请求超时时间)避免无限阻塞。false)。开启后(设为true),生产者会自动去重,保证同一分区内的消息不会重复发送。需配合acks=all和retries>0使用,是实现“精确一次”语义的基础。5)。若启用幂等性,建议设为1,避免乱序(幂等性依赖请求顺序)。0,即立即发送)。增大该值(如5-100ms)可以让生产者等待更多消息填满批次,提高批量发送效率,但会增加消息延迟。16KB)。增大该值(如32KB-1MB)可以容纳更多消息,减少网络请求次数,提升吞吐量,但会占用更多内存。32MB)。用于存储待发送的消息批次,若生产速度远大于发送速度,可适当增大该值(如64MB-128MB),避免因缓冲区满导致阻塞。none,即不压缩)。可选值:gzip(高压缩比,但CPU消耗大)、snappy(平衡压缩比与速度)、lz4(更快的压缩速度)、zstd(高压缩比且速度快)。压缩可减少网络带宽占用,适合带宽有限场景。org.apache.kafka.clients.producer.internals.DefaultPartitioner,采用Key哈希或轮询策略)。若需要自定义分区逻辑(如按业务维度分区),可实现Partitioner接口并指定该参数。30秒)。若超过该时间未收到响应,生产者会重试或抛出异常。需根据网络状况调整,避免因超时设置过短导致频繁重试。60秒)。当缓冲区满或元数据(Topic/分区信息)不可用时,生产者会阻塞,超过该时间则抛出TimeoutException。需根据应用场景调整,避免长时间阻塞。