Надежность изменения номера поля прото

Dec 10 2020

Например, если я изменился с:

message Request {
  int foo = 1;
}

к

message Request {
  int bar = 1;
  int foo = 2;
}

Безопасно ли менять fooс 1 на 2? Документы не говорят:, These numbers are used to identify your fields in the message binary format, and should not be changed once your message type is in use.но я хотел бы знать, почему.

Ответы

1 Matteo Dec 10 2020 at 17:12

Если у вас есть сериализованная версия сообщения, созданная с помощью первой версии, вы не сможете десериализовать вторую версию сообщения. Если вы используете protobuf для создания модели для хранения в БД или для публикации в брокере, таком как Apache Kafka, вам необходимо следовать соглашению. Если вы используете прото-буфер для создания модели и сервиса для онлайн-использования, вы не должны ничего ломать (если вы повторно сгенерируете все модели)

См. Также ключевое слово зарезервировано , чтобы не использовать повторно старый номер. Дополнительное чтение также здесь