2013-11-28 37 views
0

我正在嘗試創建一個kafka製作人,向kafka經紀人(而不是動物園管理人)發送消息。kafka 0.72,最小經紀人數

我知道更好的做法是使用zk,但目前我想直接發送消息給經紀人。

爲此,我將屬性「broker.list」設置爲described in the documentation。問題是,爲了使其運作起來,它至少需要3個經紀人(否則我會得到一個例外)。

卡夫卡的source code我可以看到:

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

這是奇怪的原因在我的數據中心我只持有2卡夫卡節點(3 ZK),我能在這種情況下怎麼辦? 有沒有辦法解決這個問題?

回答

2

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

所以你應該罰款與我猜,只是試圖通過一個經紀人,它應該工作。讓我們知道如何去

+1

您是對的,這就是爲什麼當我將「0:」部分添加到它的代理標識符時。 – forhas

0

顯然寫

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

它工作的時候(我加了「0」到原來的字符串)。 我在quick start guide的第9部分找到了它。

我不知道我得到它,也許這個零是分區號(?)也許是別的東西(如果有人可以在這裏說一些光可能會很好)。

+1

可能這是作爲包含經紀人信息的地圖的關鍵(我不確定)..如果你爲多個經紀人使用相同的'id',會發生什麼..例如'props.put(「broker.list 「,」0:broker1:9092,0:broker2:9092「);'..可能會在那裏得到一些線索,我希望 – user2720864

相關問題