我正在尝试创建一个发送消息给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),在这种情况下我该怎么办? 有办法解决这个问题吗?
答案 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部分找到了它。
我不确定我是否已经得到它,也许这个零是分区号(?)也许别的东西(如果有人可以在这里说清楚,可能会很好)。