Desidero utilizzare Avro per serializzare i dati per i miei messaggi Kafka e vorrei utilizzarlo con un repository di schemi Avro in modo da non dover includere lo schema con ogni messaggio.Apache Kafka con Avro e Schema Repo - dove nel messaggio viene inviato l'ID schema?
L'uso di Avro con Kafka sembra una cosa molto popolare da fare, e molti blog/Stack Overflow domande/gruppi di utenti ecc. Fanno riferimento all'invio dell'ID schema con il messaggio ma non riesco a trovare un esempio reale di dove dovrebbe andare.
Penso che dovrebbe andare nell'intestazione del messaggio Kafka da qualche parte ma non riesco a trovare un posto ovvio. Se fosse nel messaggio Avro dovresti decodificarlo rispetto a uno schema per ottenere il contenuto del messaggio e rivelare lo schema su cui devi decodificare, il che ha problemi evidenti.
Sto utilizzando il client C# ma un esempio in qualsiasi lingua sarebbe ottimo. La classe messaggio ha questi campi:
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; }
ma non sembrano corretti. MessageMetaData ha solo Offset e PartitionId.
Quindi, dove dovrebbe andare l'ID schema Avro?
Ciao serejja, sai dov'è lo schema di codifica? La specifica su https://avro.apache.org/docs/1.7.7/spec.html parla di file contenitore oggetti contenenti lo schema completo ma non penso che questo sia lo stesso che descrivi. – jheppinstall
@jheppinstall si prega di vedere la mia risposta aggiornata – serejja
Grazie a @serejja, credo che la mia domanda fosse più simile a come i membri del Confluent decidono di usare [byte magico] [schema id] [messaggio effettivo] come formato del messaggio? lo hanno definito, o è specificato altrove? – jheppinstall