Ich bin relativ neu in Kafka. Ich habe ein bisschen damit experimentiert, aber ein paar Dinge sind mir in Bezug auf den Verbraucher-Offset unklar. Nach dem, was ich bisher verstanden habe, wird beim Start eines Verbrauchers der Offset, von dem er zu lesen beginnt, durch die Konfigurationseinstellung bestimmt auto.offset.reset
(korrigieren Sie mich, wenn ich falsch liege).
Angenommen, das Thema enthält 10 Nachrichten (Offsets 0 bis 9), und ein Verbraucher hat zufällig 5 davon verbraucht, bevor es ausfiel (oder bevor ich den Verbraucher getötet habe). Sagen Sie dann, ich starte diesen Verbraucherprozess neu. Meine Fragen sind:
Wenn das auf gesetzt
auto.offset.reset
istsmallest
, wird es immer ab Offset 0 verbrauchen?Wenn das auf eingestellt
auto.offset.reset
istlargest
, wird es ab Offset 5 verbraucht?Ist das Verhalten in Bezug auf diese Art von Szenario immer deterministisch?
Bitte zögern Sie nicht zu kommentieren, wenn etwas in meiner Frage unklar ist. Danke im Voraus.
quelle
auto.offset.reset
danach keine Bedeutung mehr? Die einzige Bedeutung dieser Einstellung ist, wenn nichts festgelegt ist (und im Idealfall beim ersten Start des Verbrauchers)?auto.offset.reset
der festgeschriebene Offset nicht verwendet und fortgesetzt. Wenn Sie immer eine andere Verbrauchergruppe verwenden (z. B. beim Starten des Verbrauchers generieren), wird der Verbraucher dies immer respektierenauto.offset.reset
Nur ein Update: Ab Kafka 0.9 verwendet Kafka eine neue Java-Version des Consumer und die Parameternamen auto.offset.reset haben sich geändert. Aus dem Handbuch:
Ich habe einige Zeit damit verbracht, dies zu finden, nachdem ich die akzeptierte Antwort überprüft hatte. Daher dachte ich, dass es für die Community nützlich sein könnte, sie zu veröffentlichen.
quelle
Darüber hinaus gibt es offsets.retention.minutes. Wenn die Zeit seit dem letzten Festschreiben> ist
offsets.retention.minutes
, wirdauto.offset.reset
auch aktiviertquelle
Prolong default value of offsets.retention.minutes to be at least twice larger than log.retention.hours.
Issues.apache.org/jira/browse/KAFKA-3806offsets.retention.minutes
:. <B> Nach einer Verbrauchergruppe alle seine Verbraucher verliert (dh leer wird) seine Offsets für diese Aufbewahrungszeit wird gehalten , bevor sie weggeworfen zu werden </ b> Für Standalone Bei Verbrauchern (bei manueller Zuweisung) laufen die Offsets nach dem Zeitpunkt des letzten Commits zuzüglich dieser Aufbewahrungsfrist ab. (Dies ist fürKafka 2.3
)