Aber was ist mit den Verbrauchern - sie scheinen keine Ausnahmen zu bekommen sobald Kafka untergeht. Wir können einfach nicht "alle" Verbraucher dazu auffordern, ihre Systeme neu zu starten. Gibt es einen besseren Weg, dieses Problem zu lösen?
Ja, Verbraucher wird keine Ausnahmen erhalten und das Verhalten ist wie geplant. Sie müssen jedoch nicht alle Benutzer neu starten, stellen Sie in Ihrer Logik sicher, dass der Consumer den Methodenaufruf poll()
regelmäßig aufruft. Der Verbraucher ist so konzipiert, dass er selbst dann nicht beeinträchtigt wird, wenn kein Cluster mehr vorhanden ist. Beachten Sie die folgenden Schritte, um zu verstehen, was tatsächlich passiert:
1: Alle Cluster sind inaktiv, es gibt keinen aktiven Cluster.
2: consumer.poll(timeout) // This will be called form you portion of code
3: Inside poll()
Methodenaufruf in KafkaConsumer.java
, die Anrufen folgende Reihenfolge stattfinden.
Ich habe die wichtigsten Methodenaufrufe markiert, die nach dem Ausführen logischer Prüfungen intern aufgerufen werden. An diesem Punkt wird Ihr Kunde warten, bis der Cluster wieder aktiv ist.
4: Cluster wieder nach oben oder
5 neu gestartet: Verbraucher werden benachrichtigt und es beginnt wieder zu arbeiten, wie sie normalerweise war es, bevor der Cluster untergeht.
Hinweis: - Der Consumer empfängt Nachrichten vom letzten Offset-Commit, die empfangene Nachricht wird nicht dupliziert.
Das beschriebene Verhalten gilt für (0.9.x-Version)
Klingt wie, was ich brauche ... Kann dies in V8.2.1 getan werden? Wenn ja, wie kann dies aktiviert werden? – nikel
Ich nahm an, dass, da es ein neues System war, Sie den neuesten Verbraucher verwenden, es tut mir leid, aber ich kenne den alten Verbraucher nicht. – Nautilus