Вопрос проверяет знание форматов данных, поддерживаемых Kafka, что важно для понимания сериализации и совместимости сообщений.
Kafka не накладывает ограничений на формат данных — она хранит и передаёт сообщения как массивы байтов. Это означает, что вы можете использовать любой формат сериализации, который преобразует объекты в байты и обратно. Однако на практике выбор формата влияет на производительность, совместимость и удобство разработки.
// Определение схемы Avro
{
"type": "record",
"name": "User",
"fields": [
{"name": "id", "type": "int"},
{"name": "name", "type": "string"}
]
}
// Отправка сообщения (Java)
ProducerRecord<String, GenericRecord> record = new ProducerRecord<>("users", avroUser);
producer.send(record);Выбор формата зависит от требований к производительности, совместимости и сложности данных. Для продакшен-систем с высокой нагрузкой и необходимостью эволюции схем рекомендуется Avro или Protobuf с Schema Registry. JSON подходит для простых сценариев или когда важна читаемость.