从0.11.0.0开始生产者配置block.on.buffer.full,metadata.fetch.timeout.ms和timeout.ms已被删除。
以下是Java生产者的配置:
name | description | default | import |
---|---|---|---|
bootstrap.servers | 用于建立与kafka集群连接的host/port组。 数据将会在所有servers上均衡加载,不管哪些server是指定用于bootstrapping。 这个列表仅仅影响初始化的hosts(用于发现全部的servers) 这个列表格式:host1:port1,host2:port2,… |
高 | |
key.serializer | 关键字的序列化类。如果没给与这项,默认情况是和消息一致 | 高 | |
value.serializer | 值的序列化类 | 高 | |
acks | 此配置是表明当一次发送消息请求被认为完成时的确认值,就是指procuder需要多少个broker返回的确认信号。此配置实际上代表了数据备份的可用性。以下设置为常用选项: (1)acks=0: 设置为0表示producer不需要等待任何确认收到的信息。副本将立即加到socket buffer并认为已经发送。没有任何保障可以保证此种情况下server已经成功接收数据,同时重试配置不会发生作用(因为客户端不知道是否失败)回馈的offset会总是设置为-1; (2)acks=1: 这意味着至少要等待leader已经成功将数据写入本地log,但是并没有等待所有follower是否成功写入。这种情况下,如果follower没有成功备份数据,而此时leader又挂掉,则消息会丢失。 (3)acks=all: 这意味着leader需要等待所有备份都成功写入日志,这种策略会保证只要有一个备份存活就不会丢失数据。这是最强的保证。 (4)其他的设置,例如acks=2也是可以的,这将需要给定的acks数量,但是这种策略一般很少用。 |
1 | 高 |
buffer.memory | 生产者可用于缓冲等待发送到服务器的记录的总字节数。 如果记录的发送速度比发送到服务器的速度快,那么生产者将会阻塞max.block.ms,之后它将抛出一个异常。 这项设置将和producer能够使用的总内存相关,但并不是一个硬性的限制,因为不是producer使用的所有内存都是用于缓存。一些额外的内存会用于压缩(如果引入压缩机制),同样还有一些用于维护请求。 |
33554432 | 高 |
compression.type | producer用于压缩数据的压缩类型。默认是无压缩。正确的选项值是none、gzip、snappy和lz4。压缩最好用于批量处理,批量处理消息越多,压缩性能越好。推荐配置一种适合的压缩算法,可以大幅度的减缓网络压力和Broker的存储压力。 string none high | ||
retries | 如果设置de值大于0,客户端将重新发送之前发送失败的数据。注意, |