kafka producer 主要参数

producer 参数

kafka 消息发送步骤

  1. producer 发送消息给kafka集群,消息被写入到指定topic的leader分区
  2. producer等到 leader broker 的返回消息的写入结果,有超时时间
  3. 完成后,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选举/网络抖动),导致消息发送失败。

注意事项

  1. 重试可能造成消息重复发送
  2. 重试可能造成消息的乱序
  3. 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

posted @ 2022-09-07 22:15  詩飛  阅读(179)  评论(0)    收藏  举报