Hinzufügen Benutzerdefinierter Header in Nachricht Kafka
Ich bin das senden einer Datei als eine Nachricht durch die Umwandlung in ein byte-array mit dem kafka-Produzent.
Ich muss auch hinzufügen, dass einige Header für die Nachricht an, zum Beispiel Dateiname, Zeitstempel, etc, so dass beim Verbraucher Ende, die ich verarbeiten kann die Nachricht basierend auf dem Dateinamen und andere Header.
Was ich derzeit tun, ist das erstellen eines Objekts und das einwickeln der raw-Nachricht und Kopfzeilen und senden Sie das Objekt in ein byte-array als eine Nachricht.
Ich würde gerne wissen, ob es einen Weg gibt, von dem kann ich hinzufügen, benutzerdefinierte Header, während die Veröffentlichung der Nachricht?
betrachten Sie bitte, zu akzeptieren, die Antwort von @Michal Borowiecki, um Verwirrung zu vermeiden, für diejenigen, die auf der Suche nach ähnlichen Lösung
InformationsquelleAutor CTDex | 2015-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kafka ist agnostisch, um den Inhalt der Nachricht und bietet keine besonderen Mittel zu bereichern, so ist dies etwas, das Sie brauchen, um selbst tun. Einen gemeinsamen Weg im Umgang mit diesen Dingen ist die Verwendung eines strukturierten format wie json, avro oder ähnliches, wo Sie sind frei zu definieren, die notwendigen Felder aus und könnte leicht fügen Sie Metadaten, um Ihre Nachricht ein und versenden Sie es aus, um die Kafka-Broker.
InformationsquelleAutor Lundahl
Kafka v0.11.0.0 fügt die Unterstützung für benutzerdefinierte Header.
Können Sie Sie beim erstellen einer ProducerRecord wie diese:
neuen ProducerRecord(Schlüssel, Wert, Header, ...), wo die Header-Typ ist Iterierbar<Header>
Weitere details finden Sie unter:
https://issues.apache.org/jira/browse/KAFKA-4208
https://cwiki.apache.org/confluence/display/KAFKA/KIP-82+-+Neuer+Datensatz+Header
Verstanden, fertig.
InformationsquelleAutor Michal Borowiecki
Habe ich seit über ähnliche Probleme mit Projekten, in denen ich gearbeitet habe, so habe ich diese einfache Bibliothek, mit deren Hilfe angehen: https://github.com/leandronunes85/messaging. Für die enthält nun eine Avro basierte Implementierung, aber es kann erweitert werden, andere Serialisierungs-framework deiner Wahl.
Müssen Sie nur zum erstellen eines (de -) serializer, die für die Objekte, die Sie haben wollen auf dem stream (Avro basiert oder nicht) und lassen AvroMessageSerializer Arbeit seiner Magie.
Dies ist noch eine sehr junge Bibliothek, aber ich fühle es kann speichern Sie viele Leute eine Menge Zeit!
InformationsquelleAutor Leandro