2017-05-04 92 views
0

恢復這裏是我的問題,卡夫卡:卡夫卡 - 爪哇 - 從crashs

我有兩個方案交換與卡夫卡的數據(一個是生產,另一個正在讀)。假設客戶崩潰。製作人將繼續發送信息,過了一段時間後,我們將重新啓動客戶。

以我們現在的經紀人設置,這裏是什麼是應該發生的:

- 如果事故發生不到1天前(如offsets.retention.minutes爲1440),偏移被檢索,等待的消息將被處理。

- 如果碰撞發生的時間超過1天,客戶的新偏移將最早重置(如auto.offset.reset最早)。問題是:如果一些消息已經被處理(在1天和7天之間),它們將會再次,因爲Kafka保存7天的消息(log.retention.hours是168)。

是對溶液那樣簡單既offsets.retention.minuteslog.retention.hours設定爲相同的值(當然,執行轉換分鐘< =>小時)?或者它會產生一些我錯過的副作用?一個更簡單的解決方案就是刪除已經處理的消息,但似乎卡夫卡不能這樣做。

感謝您的閱讀。

回答

0

我認爲你的思路是正確的。

我會從一個有趣的開放式問題,引用一些句子(你可以找到它here)給一些有關此光:

關於刪除策略:

保留每完成話題/分區。如果給定主題/分區的上次提交偏移未更新的時間超過offsetset.retention.minutes,則偏移量將被垃圾收集。

之所以膠印保留默認值是低:

對於給定的消費羣體,主題,分區,壓實後,會出​​現存儲了的偏移主題中最終只有一個消息。我們想要保護的是很多短命的消費者羣體。

你可以看看這個問題,你不是第一個想出這個問題的人。