kafka 0.72,经纪人数量最少

时间:2013-11-28 10:30:29

标签: apache-kafka

我正在尝试创建一个发送消息给kafka经纪人(而不是动物园饲养员)的kafka生产者。

我知道更好的做法是使用zk,但目前我想直接向经纪人发送消息。

为此,我将属性“broker.list”设置为described in the documentation。问题是,为了使它工作,它至少需要3个经纪人(否则我得到一个例外)。

在kafka的source code我可以看到:

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

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

2 个答案:

答案 0 :(得分:2)

brokerInfo是通过拆分个人经纪人信息和 NOT 经纪人数量获得的..如果您仔细检查了源代码,您会看到像

这样的东西

// 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")

所以你应该没问题,我想,只是尝试通过一个经纪人,它应该工作。让我们知道它是怎么回事

答案 1 :(得分:0)

显然写作时

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

它有效(我在原始字符串中添加了“0:”)。 我在quick start guide的第9部分找到了它。

我不确定我是否已经得到它,也许这个零是分区号(?)也许别的东西(如果有人可以在这里说清楚,可能会很好)。