重要的消费者参数
1.fetch.min.bytes
默认值为 1 B。consumer 在一次 poll 时,拉取的最小数据量,小于该值时,consumer 需要进行等待,直到满足该参数的大小。当吞吐要求高时可以适当调大此参数用延迟换取吞吐。
2.fetch.max.bytes
默认值为 52428800 B,即 50 MB。与最小对应,此参数表示每次拉取的最大数据量。这个最大指的是多条消息的情况下,如果是单挑消息超过 该参数值,那么还是能正常消费的。而限制消息大小的参数是通过 broker 端的参数 message.max.bytes 来设置的
3.fetch.max.wait.ms
如果一直没有达到 fetch.min.bytes 参数要求的数据量时,不能一直阻塞等待导致 consumer收不到响应信息,因此使用 此参数 来限制当没达到指定数据量时的等待时间,默认为 500 ms 。对于延迟要求较高的场景可以选择调低此参数值。
4.max.partition.fetch.bytes
默认值为 1048576 B,即 1 MB。此参数配置的是一次poll中 ,每个分区的最大数据量。与 fetch.max.bytes 类似。一个是分区范围,一个是整体范围。如果单条超过参数最大值,也不会影响消费。
5.max.poll.records
默认值为 500。配置 consumer 一次拉取的最大消息数量。增加此参数值可以提高消费速度,即吞吐量。
6.connections.max.idle.ms
默认值 540000 ms,即 9 分钟。指定多久之后关闭限制的连接。
7.exclude.internal.topics
默认值为 true。设置 Kafka 中默认主题是否可以向 consumer 公开,如果公开,那么只能使用 subscribe(collection) 来订阅内部主题,而不能使用正则方式 ( subscribe(Pattern) ) 。
8.receive.buffer.bytes
此参数用来设置 Socket
接受消息缓冲区(SO_RECBUF
)的大小,默认值 32768 B,即 32 KB。如果为 -1 ,则为操作系统的默认值。如果Producer
和Kafka
在不同的机房,可以适当调大此参数值。
9.send.buffer.bytes
此参数用来设置 Socket 发送消息缓冲区(SO_SNDBUF
)的大小,默认值 131072 B,即 128KB。如果为 -1,则为操作系统默认值。
10.request.timeout.ms
此参数用来配置 Producer
等待请求响应的最长时间,默认值为 30000 ms,即 5 分钟。请求超时之后可以选择重试。此参数最好比 broker 端参数 replica.lag.time.max.ms
的值要大,减小 Producer
重试引起的消息重复的概率。
11.metadata.max.age.ms
默认值为 300000 ms,即 5 分钟。元数据的过期时间,如果此时间内没有进行更新,那么将强制更新,即使没有任何分区变化或者新的broker加入等情况。
12.reconnect.backoff.ms
退避时间。