我讀過Kafka網站上的文檔,但在嘗試實現一個完整的最小示例(生產者 - >卡夫卡 - >消費者)後,我不太清楚「消費者狀態」抵消需要處理。Apache Kafka:消費者狀態
一些信息
- 我使用高層API(Java)的
- 我的消費者是一個簡單的類可以在「快速開始」海邊的卡夫卡 頁上找到一個主,基本上是相同的
- 我使用的動物園管理員
- 我使用一個單一的經紀
現在,文檔說高層API消費者STOR上課用動物管理員,所以我期望的抵消,因此消費者的狀態將保持卡夫卡代理重新啓動
之間- 其狀態
- 消費者重新
但遺憾的是它沒有:每個當我重新啓動經紀人或消費者時,所有消息都會重新發送。 現在,也許這些都是愚蠢的問題,但
在卡夫卡的情況下重新啓動:我明白,是由消費者來保持其狀態,所以可能當經紀人(重新)啓動重新傳遞所有(! )消息和消費者決定要消費什麼......是嗎?如果是這樣,如果我有10.0000.0000條消息會發生什麼?
如果JVM消費者重新啓動:如果狀態保持在Zookeeper上,爲什麼消息被重新傳遞?新的JVM有不同的消費者「身份」可能嗎?在這種情況下,我如何綁定以前的身份?
你能對你如何管理從卡夫卡偏移在本地而不是詳細點嗎?就像你如何確定和計算髮送給每個消息的偏移量然後消耗。 – David
一旦消耗 - 將當前時間戳添加爲msg id,並在hsql中將消息存儲爲二進制blob(它以avro格式發送,我們不會反序列化)hsql(持久化到磁盤),或者您可以使用apache phoenix和歸檔它在二進制格式有兩列ID(時間戳),消息(VARBINARY) – alex
但是,這與消息偏移有什麼關係? Kafka偏移量值不是消息的時間戳或二進制編碼,也不是它的哈希值?我還是卡夫卡的新手,請原諒我的無知。 – David