Chcę użyć Avro do serializowania danych dla moich wiadomości Kafka i chciałbym użyć go z repozytorium schematów Avro, więc nie muszę dołączać schematu do każdej wiadomości.Apache Kafka z Avro i Schema Repo - gdzie w wiadomości pojawia się schemat Id?
Używanie Avro z Kafką wydaje się być popularną rzeczą do zrobienia, a wiele blogów/pytań przepełnienia stosu/grup użytkowników, itp., Wysyłając identyfikator schematu z wiadomością, ale nie mogę znaleźć właściwego przykładu, gdzie powinien się udać.
Myślę, że powinien on być umieszczony w nagłówku wiadomości Kafki gdzieś, ale nie mogę znaleźć oczywistego miejsca. Jeśli było to w komunikacie Avro, musielibyśmy go rozszyfrować względem schematu, aby uzyskać treść wiadomości i ujawnić schemat, który należy rozszyfrować, co ma oczywiste problemy.
Używam klienta C#, ale przykład w dowolnym języku będzie świetny. Klasa wiadomości ma następujące pola:
public MessageMetadata Meta { get; set; }
public byte MagicNumber { get; set; }
public byte Attribute { get; set; }
public byte[] Key { get; set; }
public byte[] Value { get; set; }
ale nie wydają się poprawne. MessageMetaData ma tylko Offset i PartitionId.
A gdzie powinien iść schemat Avro Schema?
Witam serejja, czy wiesz, gdzie znajduje się schemat kodowania? Specyfikacja na stronie https://avro.apache.org/docs/1.7.7/spec.html mówi o plikach kontenera obiektów zawierających pełny schemat, ale nie sądzę, że jest to to samo, co opisujesz. – jheppinstall
@jheppinstall zobacz moją zaktualizowaną odpowiedź – serejja
Dzięki @serejja, domyślam się, że moje pytanie bardziej przypominało, w jaki sposób Użytkownicy Confluent zdecydowali się użyć [bajt magiczny] [identyfikator schematu] [aktualny komunikat] jako format wiadomości? czy to zdefiniowali, czy jest to określone gdzie indziej? – jheppinstall