Kafka Manual Commit Szenario SpringbootJava

Java-Forum
Anonymous
 Kafka Manual Commit Szenario Springboot

Post by Anonymous »

Wir verwenden Spring Boot Kafka Listener, um Nachrichten von Kafka zu konsumieren. Derzeit können der Auto -Commit -Offset aktiviert und so die Offset -Commits alle 5 Sekunden (Standard -Auto -Commit -Intervall) stattfinden. Wir befragen Kafka für jeweils 100 Datensätze und nehmen etwa 300 Millisekunden, um die Nachrichten zu verarbeiten. In einem regulären Szenario, in dem mehrere Nachrichten mehr als schnell verarbeitet werden, werden sie alle 5 Sekunden verarbeitet. Auch wenn der Service -Pod vor dem nächsten Offset -Commit ausgeht, ist der Code idempotent, sodass alle noch nicht festgelegten Nachrichten im Falle dieses Problems erneut veröffentlicht/neu verarbeitet werden. Wenn die Verarbeitung gut abgeschlossen ist, gibt es kein Problem. Wenn es jedoch Fehler bei der Verarbeitung dieser Nachrichten gibt, die bereits verbraucht gekennzeichnet sind, verlieren wir diese Nachrichten. Ich dachte darüber nach, den ACK -Modus in manuell zu ändern und nach jeder Charge zu verpflichten, egal wie lange es dauert (natürlich weniger als das max.poll.interval), aber dies erhöht die Anzahl der Offset -Commits um 10 -fach. Ich dachte auch daran, einen internen Timer anzuerkennen, wenn der Timer seit der letzten Umfrage 5 Sekunden lang vergrößert. Auf diese Weise wird das Commit nicht erfolgen, wenn die aktuelle Umfrageverarbeitung länger als 5 Sekunden dauert und erst später erfolgt. Ich habe auch verschiedene ACK -Modi wie count/count_time ausprobiert, aber nichts davon löst den Anwendungsfall hier. Ich bin mir nicht sicher, wie dies behandelt werden kann.
Irgendwelche Gedanken dazu?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post