kafka producer 主要参数
producer 参数
kafka 消息发送步骤
- producer 发送消息给kafka集群,消息被写入到指定topic的leader分区
- producer等到 leader broker 的返回消息的写入结果,有超时时间
- 完成后,producer可以继续发送下一条消息
acks
acks 参数取值
| ack | 含义 | 优点 | 缺点 |
|---|---|---|---|
| 0 | producer 不理睬leader broker的处理结果 | producer 吞吐量最大 | 用户无法通过回调感知任何发送过程的失败 |
| all/-1 | leader broker 将消息写入本地日志,同时等待ISR中的所有副本将消息写入本地日志 | 只要ISR中有一个副本存活,那么这条消息就不会丢失 | 吞吐量最低 |
| 1 | leader broker 将消息写入本地日志,便发送响应结果给producer | 保证吞吐量的同时,可以达到适当的消息可靠性 |
1 是该参数的默认值
buffer.memory
作用
producer 端用于缓存消息的缓冲区大小,单位B, 默认值33554432 (32MB)
compression.type
作用
设置producer端是否压缩消息,默认值none, 支持 GZIP,Snappy 和 LZ4
retries
作用
kafka broker 在写入请求时可能因为瞬时的故障(瞬时的leader选举/网络抖动),导致消息发送失败。
注意事项
- 重试可能造成消息重复发送
- 重试可能造成消息的乱序
- producer 两次重试之前会停顿一段时间, 由retry.backoff.ms 默认值是100毫秒
batch.size
作用
producer 会将发送到同一个分区的消息封装到一个batch中, 默认值 16KB
linger.ms
作用
控制消息的延时行为,默认值0
max.request.size
作用
控制producer发送请求的大小,默认值是1KB,无法满足企业级消息,需要设置
request.timeout.ms
作用
producer 发送消息给broker后,broker要在规定的时间内将处理结果返回给producer,默认值30s
超时会抛出TimeoutException

浙公网安备 33010602011771号