Kafka0.72,最低经纪人人数

col17t5w  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(284)

我正在尝试创建一个Kafka制作人,它向Kafka经纪人(而不是Zookeeper)发送消息。
我知道更好的做法是使用zk,但目前我想直接向代理发送消息。
为此,我设置了文档中描述的属性“broker.list”。问题是,为了让它工作,它至少需要3个代理(否则我会得到一个例外)。
在Kafka的源代码中我可以看到:

if(brokerInfo.size < 3) throw new InvalidConfigException("broker.list has invalid value")

这很奇怪,因为在我的数据中心,我只有2个kafka节点(和3个zk),在这种情况下我能做什么?有办法解决这个问题吗?

2wnc66cl

2wnc66cl1#

显然在写作的时候

props.put("broker.list", "0:" + <host:port>);

它可以工作(我在原始字符串中添加了“0:”。我在快速入门指南的第9节中找到了它。
我不确定我是否得到它,也许这个零是分区号(?)也许是其他的东西(如果有人能在这里透露一些信息就好了)。

7nbnzgx9

7nbnzgx92#

这个 brokerInfo 是通过拆分单个经纪人信息而不是经纪人数量获得的。。如果你仔细检查源代码,你会发现 // check if each individual broker info is valid => (brokerId: brokerHost: brokerPort) 然后他们把这些信息分为

brokerInfoList.foreach { bInfo =>
       val brokerInfo = bInfo.split(":")
       if(brokerInfo.size < 3) throw new InvalidConfigException("broker.list has invalid value")
   }

因此,每个代理都需要一个id,其中主机名和端口由 : 分隔符
基本上关于经纪人的数量,它只是这样做

val brokerInfoList = config.brokerList.split(",")
    if(brokerInfoList.size == 0) throw new InvalidConfigException("broker.list is empty")

所以我想你应该没问题,只要通过一个经纪人就行了。告诉我们进展如何

相关问题