Ich versuche, meinen Verbraucher dynamisch seinen Verbrauch zu aktualisieren.Wie kann der Benutzer benachrichtigt werden, dass ein neues Thema in Kafka erstellt wurde?
Lassen Sie mich Ihnen ein konkreteres Beispiel mit Tieren geben. Stellen Sie sich vor, ich hätte eine Tierhandlung, jedes Thema ist eine Art von Tier (z. B. Hunde, Katzen, Fische). Die Hauptverantwortlichkeit meines Kafka-Konsumenten ist es, alle Protokolle/Aufzeichnungen/Nachrichten, die wir in Kafka haben, zu erfassen und in einer Datenbank zu speichern.
Angenommen, mein Konsument verbraucht aktiv dogs
und cats
Themen und alles funktioniert gut, jetzt gibt es eine neue Art von Tier in den Laden kommen und ein neues Thema wird im Kafka-Cluster generiert. Wie kann ich meinem Kunden mitteilen, dass ein neues Thema hinzugefügt wurde?
Ich habe zwei Vorschläge und ich möchte sehen, welche ist Ihrer Meinung nach besser? Oder wenn es eine bessere 3. Option gibt, lass es mich wissen.
1.) Der Produzent sendet eine HTTP-Anfrage an den Verbraucher und informiert den Verbraucher darüber, dass der Hersteller ein neues Thema erstellen wird, damit der Verbraucher entsprechend handeln kann. Das Problem bei diesem Ansatz ist, dass es eine Race-Bedingung gibt. Es besteht die Möglichkeit, dass der Verbraucher versucht, zu konsumieren, bevor das Thema überhaupt erstellt wird. (Ich eigentlich gerade entdeckt, dass, wenn ich auto.topic.creation.enable
Satz wahr habe, die Race-Bedingung nicht wirklich ein Problem ist.)
2.) Erstellen Sie ein zusätzliches Thema topic_updates
in dem Kafka-Cluster genannt. Wenn also der Produzent erfolgreich eine Nachricht an den Kafka-Cluster gesendet hat, sendet er die Nachrichten über diese topic_updates
, vielleicht genügt ein einfacher String. Der Verbraucher hört aktiv auf diese Aktualisierung des Themas.
3.) Ich weiß es nicht, idealerweise möchte ich, dass Kafka jedes Mal ein Ereignis ausgibt, wenn ein neues Thema erstellt wird.
Vielen Dank im Voraus