前言

kakfa提供了Producer(生产者)的配置参数。

打开网易新闻 查看精彩图片

一些重要参数

1、serializer.class

默认值:kafka.serializer.DefaultEncoder,必须实现kafka.serializer.Encoder接口,将T类型的对象encode成kafka message。

2、partitioner.class

默认值:kafka.producer.DefaultPartitioner,必须实现kafka.producer.Partitioner,根据Key提供一个分区策略。

3、producer.type

默认值:sync,指定消息发送是同步还是异步。异步asyc成批发送用kafka.producer.AyncProducer, 同步sync用kafka.producer.SyncProducer。

4、metadata.broker.list

默认值:boker list,使用这个参数传入boker和分区的静态信息,如host1:port1,host2:port2, 这个可以是全部boker的一部分。

5、compression.codec

默认值:NoCompressionCodec,消息压缩,默认不压缩。

6、compressed.topics

默认值:null,在设置了压缩的情况下,可以指定特定的topic压缩,为指定则全部压缩。

7、message.send.max.retries

默认值:3,消息发送最大尝试次数。

8、retry.backoff.ms

默认值:300,每次尝试增加的额外的间隔时间。

9、topic.metadata.refresh.interval.ms

默认值:600000,定期的获取元数据的时间。当分区丢失,leader不可用时producer也会主动获取元数据,如果为0,则每次发送完消息就获取元数据,不推荐。如果为负值,则只有在失败的情况下获取元数据。

10、queue.buffering.max.ms

默认值:5000,在producer queue的缓存的数据最大时间,仅仅for asyc。

11、queue.buffering.max.message

默认值:10000,producer 缓存的消息的最大数量,仅仅for asyc。

12、queue.enqueue.timeout.ms

默认值:-1,0当queue满时丢掉,负值是queue满时block,正值是queue满时block相应的时间,仅仅for asyc。

13、batch.num.messages

默认值:200,一批消息的数量,仅仅for asyc。

14、request.required.acks

默认值:0,0表示producer毋须等待leader的确认,1代表需要leader确认写入它的本地log并立即确认,-1代表所有的备份都完成后确认。 仅仅for sync。

15、request.timeout.ms

默认值:10000,确认超时时间。