Я хочу использовать Avro для сериализации данных для своих сообщений Kafka и хотел бы использовать его в репозитории схемы Avro, поэтому мне не нужно включать схему с каждым сообщением.
Использование Avro с Kafka кажется популярной задачей, а также множество вопросов по блогам/вопросам /usergroups и т.д., отправляя идентификатор схемы с сообщением, но я не могу найти фактический пример того, куда он должен идти.
Я думаю, что он должен идти в заголовок сообщения Kafka где-то, но я не могу найти очевидное место. Если бы это было в сообщении Avro, вам нужно было бы декодировать его по схеме, чтобы получить содержимое сообщения и открыть схему, которую нужно декодировать, что имеет очевидные проблемы.
Я использую клиент С#, но пример на любом языке был бы замечательным. Класс сообщения имеет следующие поля:
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; }
но не все они кажутся правильными. MessageMetaData имеет только Offset и PartitionId.
Итак, где должен быть идентификатор схемы Avro?