Sicherheit der Änderung der Protofeldnummer
Zum Beispiel, wenn ich geändert habe von:
message Request {
int foo = 1;
}
zu
message Request {
int bar = 1;
int foo = 2;
}
Ist es sicher, foo
von 1 auf 2 zu wechseln ? Docs sagen nicht zu: 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.
aber ich würde gerne wissen warum.
Antworten
Wenn Sie eine serialisierte Version der Nachricht haben, die mit der ersten Version generiert wurde, können Sie mit der zweiten Version der Nachricht keine Deserialisierung durchführen. Wenn Sie protobuf verwenden, um ein Modell zum Speichern in einer Datenbank oder zum Veröffentlichen in einem Broker wie Apache Kafka zu generieren, müssen Sie die Konvention befolgen. Wenn Sie den Protopuffer verwenden, um ein Modell und einen Dienst für die Online-Nutzung zu generieren, sollten Sie nichts beschädigen (wenn Sie alle Modelle neu generieren).
Siehe auch das reservierte Schlüsselwort , um eine alte Zahl nicht wiederzuverwenden. Weiterführende Literatur auch hier