2015-03-13 12 views
5

Wysyłam plik jako wiadomość, konwertując go do tablicy bajtów za pomocą producenta kafka.Dodawanie niestandardowych nagłówków w wiadomości Kafki

Potrzebuję również dodać nagłówki do wiadomości, na przykład nazwę pliku, sygnaturę czasową itp., Więc po stronie klienta mogę przetworzyć wiadomość na podstawie nazwy pliku i innych nagłówków.

Co obecnie robię, to tworzenie obiektu i zawijanie w nim nieprzetworzonej wiadomości i nagłówków oraz wysyłanie obiektu do tablicy bajtów jako wiadomości.

Chciałbym wiedzieć, czy istnieje sposób, w jaki mogę dodać niestandardowe nagłówki podczas publikowania wiadomości?

Odpowiedz

4

Kafka jest agnostykiem dla treści wiadomości i nie zapewnia żadnych specjalnych środków do jej wzbogacenia, więc jest to coś, co musisz zrobić sam. Typowym sposobem radzenia sobie z tymi rzeczami jest użycie formatu strukturalnego, takiego jak json, avro lub podobne, w którym możesz dowolnie definiować niezbędne pola i łatwo dodawać metadane do wiadomości i wysyłać je do brokerów Kafka.

+1

więc w takim przypadku otrzymam całą wiadomość w całym temacie, a następnie przeanalizuję każdą wiadomość, a następnie w oparciu o moje metadane zastosuję jakąś logikę, pomyślałem, że będzie sposób, w jaki mogę uzyskać komunikat składający się z pewnych konkretnych metadanych zamiast cała wiadomość – CTDex

0

Mam podobne problemy z projektami, nad którymi pracowałem, więc stworzyłem tę prostą bibliotekę, aby pomóc rozwiązać ten problem: https://github.com/leandronunes85/messaging. Na razie zawiera implementację opartą na Avro, ale można ją rozszerzyć na dowolne inne ramy do serializacji według własnego wyboru.

Po prostu musisz utworzyć (de) serializator dla obiektów, które chcesz mieć w strumieniu (oparte na Avro lub nie) i pozwolić AvroMessageSerializer działać magicznie.

To wciąż bardzo młoda biblioteka, ale wydaje mi się, że może uratować wiele osób przez długi czas!

8

Kafka v0.11.0.0 dodaje obsługę niestandardowych nagłówków.

Można dodawać je podczas tworzenia ProducerRecord takiego:

nowy ProducerRecord (klucz, wartość, nagłówki ...), gdzie nagłówki jest typu iterowalny <Header>

Więcej szczegóły patrz:

https://issues.apache.org/jira/browse/KAFKA-4208

https://cwiki.apache.org/confluence/display/KAFKA/KIP-82+-+Add+Record+Headers

+0

Proszę wykazać, w jaki sposób rozwiązuje problem w samej odpowiedzi. –

+0

Zrozumiane, gotowe. –

Powiązane problemy