2014-10-28 61 views
0

我在那裏,我在斯卡拉實施卡夫卡生產者客戶一個非常奇怪的問題,而當卡夫卡羣集了一切工作正常。也就是說,製作人將數據正確推入卡夫卡。但是,如果我將我的製作者設置爲「異步」,則Kafka Producer客戶端將正確放置數據,如果羣集已啓動且正在工作,但生產者還會將數據推入...無效...如果集羣已關閉!也就是說,如果羣集關閉,Kafka Producer不會返回錯誤。卡夫卡0.8.1 Scala的異步生產者 - 無法檢測卡夫卡羣集關閉

這對我來說很關鍵,因爲當生產者發現要推入卡夫卡的數據時,它會刪除該數據源...因此,如果集羣出現故障,生產者只會銷燬所有源數據。

如果生產者被設置成「同步」模式然而,生產者並不正確默認3重試之後失效,根據所述屬性(我認爲message.send.max.retries)。

這裏有什麼想法嗎?

回答

1

這是異步生產者的記錄的行爲。如果您確實在乎是否將消息發送給代理,請使用sync-producer。或者,更好的是(儘管尚未完整記錄),使用Kafka 0.8.2-beta和新的生產者 - 這可以讓你異步地發送消息,但檢查返回的「未來」對象的狀態。