Kafka消費者出現這種日志,說明kafka消費者拉取的偏移量,在Kafka服務端沒有,就會進行偏移量的重置,
為什么會沒有偏移量呢?可能是因為該偏移量的資料洗掉了,也可能是因為程式里呼叫了seek方法,手動指定了偏移量,而這個偏移量在Kafka中還沒有存盤到資料,也會報out of range,
博主就是因為在負載均衡監聽器中,獲取consumer在kafka服務端的偏移量時,呼叫了consumer.commited()方法,該方法回傳的就是下一個要拉取的偏移量,而在這里我又加了1,所以造成了out of range的情況出現,
出現out of range后,kafka會自動重置偏移量,針對上述的第一種out of range的情況,即偏移量資料丟失了,那么kafka會將偏移量自動重置到下一個有資料的偏移量上,例如,偏移量1-10中,3-5偏移量的資料丟失了,那么,kafka拉取到3時,會報out of range日志,此時kafka會將偏移量重置到6上,
而針對第二種情況的out of range,即超出了現有偏移量的范圍,此時kafka會根據consumer設定的reset策略進行重置,如果設定的是earliest,則會重置到開頭,重新消費,如果設定的是latest,則會重置到最近的一個有偏移量的地方,
所以,當我們設定為earliest時,且程式中呼叫seek手動設定偏移量時,如果偏移量計算不好,很容易造成從頭開始消費的后果,針對這種情況,我們可以把reset屬性設定成none,重置時拋出例外,來避免從頭開始重復消費的后果,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293130.html
標籤:其他
上一篇:大資料開發超高頻面試題!大廠面試必看!包含Hadoop、zookeeper、Hive、flume、kafka、Hbase、flink、spark、數倉等
