第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Kafka Streams 在生產(chǎn)主題時不會將偏移量增加 1

Kafka Streams 在生產(chǎn)主題時不會將偏移量增加 1

LEATH 2022-06-15 09:41:25
我已經(jīng)實現(xiàn)了一個簡單的 Kafka 死信記錄處理器。使用控制臺生產(chǎn)者生成的記錄時,它可以完美運行。但是我發(fā)現(xiàn)我們的 Kafka Streams 應(yīng)用程序不能保證為接收器主題生成記錄,每生成一條記錄,偏移量就會增加 1。死信處理器背景:我有一個場景,在發(fā)布處理它所需的所有數(shù)據(jù)之前可能會收到記錄。當流應(yīng)用程序不匹配記錄以進行處理時,它們將移動到死信主題,而不是繼續(xù)向下流。當新數(shù)據(jù)發(fā)布時,我們將來自死信主題的最新消息轉(zhuǎn)儲回流應(yīng)用程序的源主題,以便使用新數(shù)據(jù)進行重新處理。死信處理器:在運行應(yīng)用程序開始時記錄每個分區(qū)的結(jié)束偏移量結(jié)束偏移量標記停止處理給定死信主題的記錄的點,以避免在重新處理的記錄返回死信主題時出現(xiàn)無限循環(huán)。應(yīng)用程序從上次通過消費者組運行產(chǎn)生的最后一個偏移量恢復(fù)。應(yīng)用程序正在使用事務(wù)并KafkaProducer#sendOffsetsToTransaction提交最后產(chǎn)生的偏移量。為了跟蹤我的范圍內(nèi)的所有記錄何時為主題的分區(qū)處理,我的服務(wù)將其最后產(chǎn)生的從生產(chǎn)者的偏移量與消費者保存的結(jié)束偏移量映射進行比較。當我們到達結(jié)束偏移量時,消費者通過暫停該分區(qū)KafkaConsumer#pause,當所有分區(qū)都暫停時(意味著它們達到保存的結(jié)束偏移量)然后調(diào)用它退出。Kafka 消費者 API狀態(tài):偏移量和消費者位置 Kafka 為分區(qū)中的每條記錄維護一個數(shù)字偏移量。此偏移量充當該分區(qū)內(nèi)記錄的唯一標識符,并且還表示消費者在分區(qū)中的位置。例如,位置 5 的消費者已經(jīng)消費了偏移量為 0 到 4 的記錄,接下來將接收偏移量為 5 的記錄。Kafka Producer API引用下一個偏移量也總是 +1。將指定偏移量列表發(fā)送給消費者組協(xié)調(diào)器,并將這些偏移量標記為當前事務(wù)的一部分。僅當事務(wù)成功提交時,這些偏移量才會被視為已提交。提交的偏移量應(yīng)該是您的應(yīng)用程序?qū)⑹褂玫南乱粭l消息,即 lastProcessedMessageOffset + 1。但是您可以在我的調(diào)試器中清楚地看到,單個分區(qū)消耗的記錄不是一次遞增 1...我想這可能是一個 Kafka 配置問題,max.message.bytes但沒有一個真正有意義。然后我想也許是因為加入,但沒有看到任何方式會改變制片人的運作方式。不確定它是否相關(guān),但我們所有的 Kafka 應(yīng)用程序都在使用 Avro 和 Schema Registry...無論生產(chǎn)方法如何,偏移量是否應(yīng)該始終遞增 1,或者使用 Kafka 流 API 是否可能無法提供與普通生產(chǎn)者消費者客戶端相同的保證?有什么我完全想念的嗎?
查看完整描述

2 回答

?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

消息偏移量增加一并不是官方的 API 約定,即使 JavaDocs 表明了這一點(似乎應(yīng)該更新 JavaDocs)。

  • 如果你不使用事務(wù),你要么得到至少一次語義,要么沒有保證(有些人稱之為最多一次語義)。對于至少一次,記錄可能被寫入兩次,因此,兩個連續(xù)消息的偏移量并沒有真正增加一,因為重復(fù)寫入“消耗”了兩個偏移量。

  • 如果您使用事務(wù),則事務(wù)的每次提交(或中止)都會將提交(或中止)標記寫入主題 - 這些事務(wù)標記也“消耗”一個偏移量(這是您觀察到的)。

因此,通常您不應(yīng)依賴連續(xù)的偏移量。您得到的唯一保證是,每個偏移量在分區(qū)內(nèi)都是唯一的。


查看完整回答
反對 回復(fù) 2022-06-15
?
萬千封印

TA貢獻1891條經(jīng)驗 獲得超3個贊

我知道知道消息的偏移量可能很有用。但是,Kafka 只會保證 message-X 的偏移量大于最后一條消息(X-1)的偏移量。順便說一句,理想的解決方案不應(yīng)基于偏移計算。

在后臺,kafka 生產(chǎn)者可能會嘗試重新發(fā)送消息。此外,如果經(jīng)紀人倒閉,則可能會發(fā)生重新平衡。恰好一次語義可能會附加一條附加消息。因此,如果發(fā)生上述任何事件,您的消息偏移量可能會發(fā)生變化。

Kafka 可能會出于內(nèi)部目的向主題添加其他消息。但是 Kafka 的消費者 API 可能會丟棄這些內(nèi)部消息。因此,您只能看到您的消息,并且您的消息的偏移量不一定會增加 1。


查看完整回答
反對 回復(fù) 2022-06-15
  • 2 回答
  • 0 關(guān)注
  • 206 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號