一.topic级别的配置
配置项 | 可选项 | 默认值 | broker参数 | 说明 |
---|---|---|---|---|
cleanup.policy | delete,compact | delete | log.cleanup.policy | 日志策略,delete或者compact |
delete.retention.ms | 数字 | 86400000 (1 day) | log.cleaner.delete.retention.ms | 日志策略为compact生效,保留时间 |
max.message.bytes | 数字 | 1048588(>1m) | message.max.bytes | 最大的record batch限制,影响最大可接受的单条消息大小 |
min.insync.replicas | 数字 | 1 | min.insync.replicas | 最小同步副本,建议:topic的replication fator=3 同时min.insync.replicas=2 同时producer的ack=-1 这三个条件来增加可靠性 |
retention.bytes | 数字 | -1 | log.retention.bytes | 日志策略为delete时生效 |
retention.ms | 数字 | 604800000 (7 days) | log.retention.ms | 日志策略为delete时生效 |
segment.jitter.ms | 数字 | 0 | log.roll.jitter.ms | 新日志段生成的随机时间,防止大量日志段同时生成,导致磁盘大量io |
segment.ms | 数字 | 604800000 (7 days) | log.roll.ms | 日志段滚动生成的最大时间 |
unclean.leader.election.enable | true,false | false | unclean.leader.election.enable | 是否允许非ISR副本选为leader,在可用性和一致性之间做权衡 |
二.producer配置
配置项 | 可选项 | 默认值 | 说明 |
---|---|---|---|
acks | all,-1,0,1 | 1 | ack数 |
buffer.memory | long | 33554432(32m) | producer保留未发送消息的最大缓存大小,缓存池满了,发送者会阻塞max.block.ms的时间,之后抛出异常 |
retries | int | 2147483647 | 重试次数,如果max.in.flight.requests.per.connection大于1,重试可能导致顺序混乱,delivery.timeout.ms也影响重试时间 |
retry.backoff.ms | long | 200 | 重试间隔时间 |
batch.size | int | 16384(16k) | batch的字节大小,大于该配置的消息单独一个batch |
connections.max.idle.ms | long | 540000 (9 minutes) | producer连接的超时时间 |
delivery.timeout.ms | int | 120000 (2 minutes) | send()方法的超时时间,应该大于request.timeout.ms+linger.ms |
linger.ms | long | 0 | 如果一个batch不满,则等待的时间,可以减少网络请求,以增大吞吐量 |
request.timeout.ms | int | 30000(30 seconds) | 一个request的超时时间,如果还有重试次数和delivery时间,会重试发送,注意需要大于broker的replica.lag.time.max.ms配置 |
max.block.ms | long | 6000(1 minute) | send()方法中 等待metadata和加到batch的时间,不包括batch发送的时间 |
max.request.size | int | 1048576(1m) | 一个batch请求的最大字节数,注意要和服务端配置,topic配置一致 |
enable.idempotence | boolean | false | 是否支持幂等,需要ax.in.flight.requests.per.connection <=5, retries >= 0 and acks = 'all' |
max.in.flight.requests.per.connection | int | 5 | 一个连接同时发送的未得到回复的请求数 |