#apache-kafka #protocol-buffers #confluent-schema-registry
Вопрос:
Как схема, используемая производителем при отправке сообщения, попадает в реестр схем кафки, поскольку производитель будет знать только сгенерированный класс сообщения protobuff.
Кроме того, как пользователь использует реестр схем, какую роль схема будет играть при потреблении, помимо обнаружения несовместимости.
Насколько я понимаю, потребитель уже будет получать сообщения в объекте класса, созданного генератором кода protobuff
Ответ №1:
Сгенерированный класс имеет метод для получения своего определения прото ( Message#getDescriptorForType()
). Когда сообщение сериализуется, вызывается этот метод, и схема отправляется в виде текста по протоколу HTTP в реестр и возвращается с идентификатором. Этот идентификатор хранится в записи Кафки; фактическая схема-нет.
Когда потребитель получает массив байтов от Кафки, он находит идентификатор, выполняет запрос HTTP GET в реестр, затем загружает схему и использует ее для десериализации оставшейся части сообщения.
Исходный код доступен для вас, чтобы вы могли лучше понять это.
Комментарии:
1. Не стесняйтесь принять ответ, поставив галочку рядом с сообщением