2016-12-07 8 views

Antwort

1

Zur Zeit (Kafka 0.10.1) gibt es keine Möglichkeit, genau einmal eine Lieferung auf Kafka schreiben zu lassen. Unabhängig davon, welche Problemumgehung Sie durchführen möchten, es wird immer eine Lücke geben und Sie können entweder mit verlorenen Nachrichten oder Duplikaten enden.

Kafka fügt jedoch eine idempotent producer (geplant für 0.10.2) hinzu, mit der Sie doppelte Schreibvorgänge vermeiden können. Das Zieldatum für 0.10.2 Release ist beginning 2017.

+0

Ist es eine gute Idee, die Daten von Kafka-Thema zu DB zu exportieren und abzufragen, um seine Existenz zu überprüfen? –

+0

Sie könnten überprüfen, dass es existiert, nur die Daten mit einem Verbraucher zurück zu lesen. Aber das ist super teuer und langsam. Es gibt jedoch keine gute Lösung, die gerade eine gute Leistung bringt. Sie müssen auf idempotenten Producer warten. Zu Wissen scheint es gut zu sein, doppelte Schreibvorgänge zu akzeptieren und Downstream-Consumer entsprechend zu gestalten und Dubletten dort herauszufiltern. –

0

Es ist unpraktisch für Sie, ob das überprüfen, besteht vor dem Aufruf Die gleiche Nachricht wurde jedes Mal gesendet, wenn Sie eine neue Nachricht senden. Denken Sie es anders: Sie können die KafkaProducer.send-Methode mit einem Rückruf aufrufen, der Sie über den Erfolg oder Misserfolg informiert.

+0

Dieser Ansatz ist nicht sicher. Selbst im Erfolgsfall gibt es möglicherweise keinen Rückruf an den Producer, wenn ein Fehler im Producer direkt nach einem erfolgreichen Write auftritt, aber bevor der Callback ausgelöst wird. Muss dies ablehnen. Wird eine neue Antwort hinzufügen. –

0

Das ist für Kafka ziemlich zu wenig. Dazu müssen Sie einen anderen Speicher verwenden, der eine ordnungsgemäße Indexierung für den wahlfreien Zugriff bietet. Je nach Ihren Anforderungen kann dies (verteilter) Cache, ein Schlüsselwertspeicher oder was auch immer sein.

Wahrscheinlich möchten Sie das eher auf der Verbraucherseite als auf der Herstellerseite tun, da verschiedene Verbraucher unterschiedliche Strategien zur Deduplizierung verwenden können (und manche Verbraucher tolerieren einfach Duplikate).

+0

Es geht darum, in Kafka zu schreiben und nicht in ein externes System. –

Verwandte Themen