1.enable.auto.commit

ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG = "enable.auto.commit";

是否自动提交,默认是true,通常为了保证消费的数据不异常,设置成false。设置false时,配合max.poll.interval.ms参数,根据自身消费者处理消息的能力,进行设值,消费消息后手动提交。

2.max.poll.interval.ms

ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG = "max.poll.interval.ms";

使用消费者组管理时调用poll()之间的最大延迟。这为消费者在获取更多记录之前可以空闲的时间设置了一个上限。如果在超时之前没有调用poll(),则认为消费者失败,组将重新平衡,以便将分区重新分配给另一个成员。根据自身消费消息的能力设值,默认值30*1000ms。

3.max.poll.records

ConsumerConfig.MAX_POLL_RECORDS_CONFIG = "max.poll.records";

在一次调用poll()中返回的最大记录数,默认值为500。根据自身业务消费消息能力设值,不要超过max.poll.interval.ms时间内最大处理消息个数。

4.auto.commit.interval.ms

ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG = "auto.commit.interval.ms";

如果enable.auto.commit设置为true,消费者偏移量自动提交到Kafka的频率(单位为毫秒),默认值5000ms。

5.session.timeout.ms

ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG = "session.timeout.ms";

当使用Kafka的组管理功能时,用来检测消费者故障的超时。使用者定期向代理发送心跳以指示其活动状态。如果在此会话超时到期之前代理没有接收到心跳,则代理将从组中删除此消费者并启动重新平衡。该值必须在group.min.session.timeout.ms和group.max.session.timeout.ms在代理配置中配置的允许范围内。默认值10*1000ms(单位为毫秒)。

6.heartbeat.interval.ms

ConsumerConfig.HEARTBEAT_INTERVAL_MS_CONFIG = "heartbeat.interval.ms";

使用Kafka的组管理工具时,从心跳到消费者协调器之间的预期时间。心跳用于确保消费者会话保持活跃,并在新消费者加入或离开组时促进重新平衡。该值必须小于session.timeout。但通常不应设置为高于该值的1/3。它可以被调整得更低,以控制正常再平衡的预期时间。默认值3*1000ms(单位为毫秒)。

7.auto.offset.reset

ConsumerConfig.AUTO_OFFSET_RESET_CONFIG = "auto.offset.reset";

参数为"latest"表示从分区末尾开始消费消息,参数为"earliest"表示从起始处开始消费消息。默认值是latest。

8.max.partition.fetch.bytes

ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG = "max.partition.fetch.bytes";

从每个分区里返回给Consumer的最大数据量,默认值为1048576(B),即1MB。此参数要配合broker的max.message.size设置,如果设置的比max.message.size小,那么消费者就可能无法正常读取到消息,比如broker能够读取到了2M的数据,但是消费者最大只能接受1M,就会有问题。

9.fetch.min.bytes

ConsumerConfig.FETCH_MIN_BYTES_CONFIG = "fetch.min.bytes";

服务器为获取请求应返回的最小数据量。如果可用数据不足,则请求将等待足够多的数据积累后再响应请求。默认设置为1字节意味着只要有一个字节的数据可用,或者读取请求就会超时等待数据到达。将该值设置为大于1的值将导致服务器等待更大量的数据积累,这可以以一些额外的延迟为代价提高服务器吞吐量。默认值为1(B)。

10.fetch.max.bytes

ConsumerConfig.FETCH_MAX_BYTES_CONFIG = "fetch.max.bytes";

服务器应为获取请求返回的最大数据量,这不是绝对的最大值,如果获取的第一个非空分区中的第一条消息大于此值,则仍将返回该消息以确保使用者能够取得进展。broker接受的最大消息大小是通过message.max.bytes(broker配置)或max.message.bytes(topic配置)定义的。请注意,消费者并行执行多个fetches。默认值为52428800(B),也就是50MB。

11.fetch.max.wait.ms

ConsumerConfig.FETCH_MAX_WAIT_MS_CONFIG = "fetch.max.wait.ms";

如果没有足够的数据来立即满足fetch.min.bytes给出的要求,服务器在响应获取请求之前阻塞的最大时间。默认值:500ms(毫秒)。

12.request.timeout.ms

ConsumerConfig.REQUEST_TIMEOUT_MS_CONFIG = "request.timeout.ms";

配置控制客户端等待请求响应的最大时间。如果在超时之前没有收到响应,客户端将在必要时重新发送请求,或者在重试次数用尽时失败请求。默认值为30*1000(毫秒)。

注意:以上参数是kafka1.0.2版本。