1揖闸、至少一次:at-least-once 表示的是關(guān)閉offset自動提交功能,消費端在消費數(shù)據(jù)的時候很可能在commitAync之前贰逾,已經(jīng)保存在數(shù)據(jù)庫错英,但是這個時候服務器宕機了,從而導致offset不能提交成功。這個時候再次啟動消費者的時候捍靠,還是會再次寫入數(shù)據(jù)庫沐旨,也就是至少一次會重復消費,至少不會丟數(shù)據(jù)榨婆。
2磁携、至多一次:at-most-once 表示有可能是0次或者1次,可以選擇開啟自動提交offset的功能良风,然后把自動提交offset的時間設置一下谊迄,有可能消費者在消費的時間段內(nèi)就到了自動提交的時間,從而導致了offset已經(jīng)提交了烟央,但是數(shù)據(jù)庫保存還沒進行统诺。下一次再消費的時候就會認為offset已經(jīng)成功了,直接丟棄消息疑俭。就會造成丟數(shù)據(jù)粮呢。
3、僅一次:exactly-once 表示數(shù)據(jù)僅被消費一次钞艇,還是開啟自動開啟offset提交的功能啄寡,可以開啟consumer.seek()方法,相當于自己處理分區(qū)和offset哩照,可以在此基礎上開啟事務挺物,保持原子性,只有數(shù)據(jù)庫保存成功再提交offset飘弧,保證兩者同時成功识藤。