参数名称 | 参数说明 | |
---|---|---|
broker参数 | broker.id | broker的唯一标示,可以使任意值,但是必须在整个kafka集群中唯一 |
port | broker的端口,建议设置在1024以上 | |
zookeeper.connect | zookeeper地址 | |
log.dirs | 用于存放kafka消息的文件路径,可以指定多个,用“,”分割 | |
num.recovery.threads.per.data.dir | kafka线程池数量,注意:此配置指定的数字是针对log.dirs的单个目录,如果此配置设置为8,log.dirs为3,则会启动24个线程 kafka会在以下3中情况使用此配置来处理消息:
| |
auto.create.topics.enable | 默认为true,默认在以下几种情形自动创建主题:
| |
主题配置 | num.partitions | 主题分区的个数,默认值是1 注意:如果想要一个主题的分区数小于此参数值,需要手动创建主题 |
log.retention.ms | kafka数据的过期时间,超过此时间日志消息将被删除,默认是168小时(一周) 注意此时间是从日志文件关闭后算起的。 | |
log.retention.bytes | kafka中数据保留的大小,作用在每一个分区上,如果有8个分区,此参数设置的是1G,那么此主题最多可以保留8G的数据 如果同时指定了log.retention.ms和log.retention.bytes,只要任意一个条件满足就会删除数据。 | |
log.segment.bytes | 每个日志文件的大小,默认是1G。 | |
log.segment.ms | 指定了每个日志文件多长时间之后关闭。默认情况下不设置此值 log.segment.ms和log.segment.bytes只要有任意一个条件满足日志文件就会关闭 | |
message.max.bytes | 此参数限制单个消息的大小,也就是生产者每次发到kafka的消息的大小。默认情况下是1MB | |
生产者参数 | bootstrap.servers | 该属性指定broker的地址清单,以逗号分隔,地址格式是host:port,不需要包含集群中所有broker的地址。 在生产者往kafka写消息时此参数必须指定。 |
key.serializer | 往kafka写消息时通过key/value的方式,broker只能接收字节数组,所有需要对消息序列化,此参数指定了key的序列化方式。 kafka客户端默认提供了ByteArraySerializer、StringSerializer、IntegerSerializer。 也可是使用自定义的序列化接口org.apache.kafka.common.serialization.Serializer 建议使用通用的序列化框架,如Apachede Avro 在生产者往kafka写消息时此参数必须指定。 | |
value.serializer | 此参数指定了vaue的序列化方式。 在生产者往kafka写消息时此参数必须指定。 | |
acks | 此参数指定了必须要有多少个分区副本收到消息,生产者才会认为消息写入是成功的。有如下选项
| |
buffer.memory | 该参数指定了生产者内存缓冲区的大小。如果应用程序发送速度超过发送到服务器的速度,回导致生产者空间不足,这个时候send()方法要么被阻塞,要么抛出异常。 | |
compression.type | 该参数指定了消息被发送到broker之前使用哪一种压缩算法,默认消息时不会压缩。该参数可以设置为snappy、gzip、lz4 | |
retries | 生产者的重发次数,当消息发送失败时生产者通过此参数来决定是否重发,重发几次。 | |
retry.backoff.ms | 指定重发间隔,默认情况下是100ms. | |
batch.size | 当有多个消息被发送到同一个分区时,生产者会把他们放到同一个批次中。该参数指定了一个批次可以使用的内存大小,按照字节计算。 | |
linger.ms | 该参数指定了生产者在发送批次之前等待更多的消息加入批次的时间。默认情况先只要有可用的线程,就算批次中只有一条消息,生产者也会把消息发出去。linger.ms设置成比0大的数,生产者在发送批次之前会等待一会,使更多的消息加入进来,虽然这样会增加延时,但是会提高吞吐量。 | |
max.in.flight.requests.per.connection | 该参数指定了生产者在收到服务器响应之前可以发多少个消息。 | |
client.id | 该参数可以是任意的字符串,服务器会用它来识别消息的来源 | |
timeout.ms | 该参数指定了broker等待同步副本返回消息确认的时间。与acks的值相匹配 | |
request.timeout.ms | 该参数指定了生产者在发送数据时等待服务器的响应时间。 | |
metadata.fetch.timeout.ms | 该参数指定了生产者在获取元数据时等待服务器的响应时间。 | |
max.block.ms | 该参数指定了在调用send()方法或者使用partitionsFor()方法获取元数据时生产者的阻塞时间 | |
max.request.size | 该参数用于控制生产者发送的请求大小。 | |
receive.buffer.bytes | 该参数指定了socket接受数据包的缓存区大小。如果设置成-1则使用操作系统的默认值 | |
send.buffer.bytes | 该参数指定了socket发送数据包的缓存区大小。如果设置成-1则使用操作系统的默认值 | |
消费者参数 | bootstrap.servers | 该属性指定broker的地址清单,以逗号分隔,地址格式是host:port,不需要包含集群中所有broker的地址。 在生产者往kafka写消息时此参数必须指定。 |
key.serializer | 往kafka写消息时通过key/value的方式,broker只能接收字节数组,所有需要对消息序列化,此参数指定了key的序列化方式。 kafka客户端默认提供了ByteArraySerializer、StringSerializer、IntegerSerializer。 也可是使用自定义的序列化接口org.apache.kafka.common.serialization.Serializer 建议使用通用的序列化框架,如Apachede Avro 在生产者往kafka写消息时此参数必须指定。 | |
value.serializer | 此参数指定了vaue的序列化方式。 在生产者往kafka写消息时此参数必须指定。 | |
group.id | 此参数指定了kafkaconsumer属于哪一个消费者 不通的group.id可以重复消费同一个topic的message | |
fetch.min.bytes | 该属性制定了消费者从服务器获取记录的最小字节数 | |
fetch.max.wait.ms | 该属性指定了broker的等待时间,默认是500ms | |
max.partition.fetch.bytes | 该属性指定了服务器从每个分区里返回给消费者的最大字节数,默认是1MB | |
session.timeout.ms | 该属性指定了消费者在认为被死亡之前可以与服务器断开连接的时间,默认是3S,也就是说消费者多久可以不发送心跳 和heartbeat.interval.ms结合使用。 | |
heartbeat.interval.ms | 发送心跳的频率,一般是session.timeout.ms的三分之一 | |
auto.offset.reset | 该属性指定了在读取一个没有偏移量的分区或者偏移量无效的情况下该做如何处理。它的默认值是latest,意思是说,在偏移量无效的情况下,消费者将从最新的记录开始读取数据。另一个是earliest,意思是说在偏移量无效的情况下从最起始位置开始读取分区记录。 | |
enable.auto.commit | 该属性指定了消费者是否自动提交偏移量,默认是true | |
auto.commit.interval.ms | 该属性用于控制提交的频率 | |
partition.assignment.strategy | 该属性指定了选择分区的策略 | |
client.id | 该属性可以是任意字符串,broker用它来标示从客户端发送过来的消息 | |
max.poll.records | 该属性用于控制单次调用call()方法时能够返回的记录数。 | |
receive.buffer.bytes | 该参数指定了socket接受数据包的缓存区大小。如果设置成-1则使用操作系统的默认值 | |
send.buffer.bytes | 该参数指定了socket发送数据包的缓存区大小。如果设置成-1则使用操作系统的默认值 | |
未完待续。。。。。