Wie bekomme ich genau die Bestätigung von Kafka, sobald die Nachricht verbraucht oder verarbeitet wird. Klingt vielleicht doof, aber gibt es eine Möglichkeit, den Start- und End-Offset der Nachricht zu kennen, für die die Bestätigung empfangen wurde?So erhalten Sie eine Bestätigung von Kafka
Antwort
Was fand ich so weit in 0,8 sie die folgende Art und Weise eingeführt haben, von dem Offset wählen zum Lesen ..
kafka.api.OffsetRequest.EarliestTime() findet den Anfang der Daten in der loggt und startet das Streaming von dort, kafka.api.OffsetRequest.LatestTime() wird nur neue Nachrichten streamen.
Beispielcode https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+SimpleConsumer+Example
noch über die Anerkennung Teil
Kafka nicht wirklich nicht sicher, strukturiert, dies zu tun. Um zu verstehen, warum, überprüfen Sie die Design-Dokumentation here.
Um eine genau einmalige Bestätigung bereitzustellen, müssen Sie ein externes Verfolgungssystem für Ihre Anwendung erstellen, in dem Sie ausdrücklich Bestätigungen schreiben und Sperren für die Transaktions-IDs implementieren, um sicherzustellen, dass die Daten nur einmal verarbeitet werden. Der Rechenaufwand für die Implementierung eines solchen Systems ist außerordentlich hoch und ist einer der Hauptgründe dafür, dass große transaktionale Systeme vergleichsweise exotische Hardware erfordern und eine wohl geringere Skalierbarkeit aufweisen als Systeme wie Kafka.
Wenn Sie keine starke Haltbarkeitssemantik benötigen, können Sie die Gruppen-API verwenden, um grob zu verfolgen, wann die letzte Nachricht gelesen wurde. Dadurch wird sichergestellt, dass jede Nachricht mindestens einmal gelesen wird. Beachten Sie, dass, da die Gruppen-API Ihnen nicht die Möglichkeit bietet, die Verarbeitungslogik Ihrer Anwendungen explizit nachzuverfolgen, Ihre tatsächlichen Verarbeitungsgarantien in diesem Szenario ziemlich schwach sind. Schemata, die auf idempotente Verarbeitung angewiesen sind, sind in dieser Umgebung üblich.
Alternativ können Sie die schlecht benannte SimpleConsumer-API verwenden (es ist ziemlich komplex zu verwenden), mit der Sie Zeitstempel innerhalb Ihrer Anwendung explizit verfolgen können. Dies ist die höchste Stufe der Verarbeitungsgarantie, die durch die nativen Kafka-APIs erreicht werden kann, da es Ihnen ermöglicht, Ihre eigenen Verarbeitungen der Daten, die aus der Warteschlange gelesen werden, zu verfolgen.
- 1. So erhalten Sie Themenliste von Kafka-Server in Java
- 2. So erhalten Sie eine Zeichenfolge von dataPackageView.GetDataAsync()
- 3. So erhalten Sie eine Antwortzeichenfolge von NSURLSessionTask
- 4. So erhalten Sie eine Umleitungsantwort
- 5. So erhalten Sie eine Direktive:
- 6. Unterschiede in Kafka und Rabbit Hersteller-Broker Bestätigung
- 7. So erkennen Sie Verbindungsfehler in Kafka
- 8. kafka NoClassDefFoundError kafka/Kafka
- 9. So erhalten Sie eine Kartensteuerung oder Interaktion
- 10. So erhalten Sie eine Seitenquelle mit JavaScript
- 11. So erhalten Sie eine genaue Ping-Messung
- 12. So erhalten Sie Sitzungsdaten über eine Benutzerregistrierung
- 13. So erhalten Sie eine Basisklasseninstanz von einer abgeleiteten Klasse
- 14. So erhalten Sie eine Zeichenfolge aus der Ausgabe von ReadProcessMemory
- 15. So erhalten Sie eine neuere Version von Ruby in Edelsteinumgebung
- 16. So erhalten Sie eine Liste von verketteten Textknoten
- 17. So erhalten Sie eine Eingabe von searchview to textview
- 18. So erhalten Sie eine Liste von Gebietsschemas in .Net
- 19. So erhalten Sie Client-IP von SimpleHTTPServer
- 20. So erhalten Sie CSV-Dimensionen von Terminal
- 21. So erhalten Sie Canonical ID von GCM
- 22. So erhalten Sie Elternkomponentenattribute
- 23. So erhalten Sie Testverlauf
- 24. So erhalten Sie Zeitzone von IP
- 25. PHP So erhalten Sie Werte von Daten
- 26. So erhalten Sie die Schriftgröße von CMFCPropertyFontProperty
- 27. So erhalten Sie die Zeitzone von Datum
- 28. Brauchen Sie Bestätigung auf BoneCP
- 29. Kann mein ASP.Net-Code eine Bestätigung von sendgrid erhalten, dass eine E-Mail gesendet wurde?
- 30. So erhalten Sie vordefinierte Papiergröße von PaperKind