proto裡的message欄位的編號

Yoger發表於2021-12-16

proto裡的message不能隨意更改任何現有欄位的編號

proto裡的message編號標識是唯一的,微服務收到的訊息會按照編號匹配,編號改變會導致匹配不到值或者匹配到的值不正確,導致獲取到的訊息內容混亂。

//傳送端服務
message ProductInfo {
    int64 id = 1;
    string name = 2;
    string url = 3;
}
//接收端服務修改後重新生成對應語言的proto檔案但未修改傳送端服務
message ProductInfo {
    int64 id = 1;
    string url = 2;
    string name = 3;
}
//如果是傳送端的message發出的訊息,接收端message的name和url的值會反過來
例如:
傳送:id:1 name:apple url:test.com 
編碼:8 1 18 5 apple 26 8 test.com  //根據欄位型別分為T-V和T-L-V兩種編碼方式
收到解析:id:1 url:apple name:test.com 
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章