在什麼情況下會出現訊息重複消費?
一般來說,重複消費會在兩種情況下出現。
1.訊息在發往a機器後,再次發往b機器,導致消費兩次。
2.訊息往a機器發兩次。
怎麼處理?
對於第一種情況,只需要根據資料的特點做對應的分割槽即可,保證該型別的訊息只會往a機器傳送
kafkalistsender
sender =
newkafkalistsender
<
>
(kafkatopicconfig.
gettopic
(companyid, kafkatopicconfig.topickey.journal)
, kafkatopicconfig.topickey.journal.
getkey()
,(journal)
->
);
對於第二種情況時有uuid即可解決
這個uuid應該存放在**?
有必要存在入redis嗎,沒有必要。
一般來說,journal會出現重複消費只會在訊息傳送的第一次消費過程中,超過一定時間之後,很難再出現這個問題。因此只需要保證在一批訊息過來時不會出現重複消費即可。
該uuid在方法內作為區域性變數即可。
Kafka 訊息丟失和訊息重複消費
producer 的acks引數值設定為 0 或者 1 不等待伺服器確認或者只讓leader確認解決方法 將acks的值設定為all或者 1,讓leader和followers全部進行確認 producer 沒有設定失敗重試解決方法 根據實際場景將retries引數值設定為正整數 consumerp...
Kafka 訊息丟失和訊息重複消費
producer 的acks引數值設定為 0 或者 1 不等待伺服器確認或者只讓leader確認解決方法 將acks的值設定為all或者 1,讓leader和followers全部進行確認 producer 沒有設定失敗重試解決方法 根據實際場景將retries引數值設定為正整數 consumerp...
kafka 訊息順序性,不重複消費
比如說我們建了乙個 topic,有三個 partition。生產者在寫的時候,其實可以指定乙個 key,比如說我們指定了某個訂單 id 作為 key,那麼這個訂單相關的資料,一定會被分發到同乙個 partition 中去,而且這個 partition 中的資料一定是有順序的。n個消費者針對某乙個to...