一、zookeeper.connect
- 默认值:无
- 必填项
- 该参数指明broker要连接的ZooKeeper集群的服务地址(包含端口号),还可以在端口后面加上一个chroot路径,不指定chroot路径时默认使用ZooKeeper的根路径
- 单节点配置:
hostname:2181
- 多节点配置:
hostname1:2181,hostname2:2181,hostname3:2181
- 多节点配置(添加chroot路径):
hostname1:2181,hostname2:2181,hostname3:2181/kafka
二、listeners
- 该参数指明broker监听客户端连接的地址列表,即为客户端要连接的broker的入口地址列表,配合着格式为protocol1://hostname1:port1,protocol2://hostname2:port2,其中protocol代表协议类型,Kafka当前支持的协议类型有PLAINTEXT、SSL、SASL_SSL等,如果未开启安全认证,则使用简单的PLAINTEXT即可。hostname代表主机名,port代表服务端口,此参数的默认值为null。
- 如果不指定主机名,则表示绑定默认网卡,注意有可能会绑定到127.0.0.1,这样无法对外提供服务,所以主机名最好不要为空;
- 如果主机名为0.0.0.0,则表示绑定所有的网卡
三、advertised.listeners
- 作用和listeners类似,默认值也为null
- 主要用于Iaas(Infrastructure as a Service)环境,比如公有云上的机器通常配备有多块网卡,即包含私网网卡和公网网卡,对于这种情况而言,可以设置advertised.listeners参数绑定公网IP供外部客户端使用,而配置listeners参数来绑定私网IP地址供broker间通信使用
四、broker.id
- 该参数用来指定Kafka集群中broker的唯一标识,默认值为-1。如果没有设置,那么Kafka会自动生成一个
五、log.dir和log.dirs
- Kafka把所有的消息都保存在磁盘上,而这两个参数用来配置Kafka日志文件存放的根目录
- 一般情况下,log.dir用来配置单个目录,而log.dirs用来配置多个根目录(以逗号分隔),但是Kafka没有对此做强制的限制,也就是说,log.dir和log.dirs都可以用来配置单个或多个根目录
- log.dirs的优先级比log.dir高,默认值为/tmp/kafka-logs
六、message.max.bytes
- 该参数用来指定broker所能接收消息的最大值,默认值为1000012(B),约等于1M。
- 如果Producer发送的消息大于这个参数所设置的值,那么(Producer)就会爆出RecordTooLargeException的异常
- 如果需要修改这个参数,那么还要考虑max.request.size(客户端参数)、max.message.bytes(topic端参数)等参数的影响。为了避免修改此参数而引起级联的影响,建议在修改此参数之前考虑分拆消息的可行性。