您可以視需求啟用 Pub/Sub 結構定義功能,強制規定 Pub/Sub 訊息中的「data」欄位格式。
發布者和訂閱者之間的訊息格式合約,是由結構定義建立。Pub/Sub 會強制執行此格式。結構定義可為訊息類型和權限建立中央授權單位,方便團隊間使用貴組織的資料串流。Pub/Sub 訊息結構定義會定義訊息中欄位的名稱和資料類型。
您可以建立結構定義並連結至某個主題,即可強制規定訊息的發布結構定義。如果特定訊息不符合結構定義,系統就不會發布該訊息。您也可以為結構定義建立其他修訂版本。
結構定義類型
您可以使用下列任一架構,在 Pub/Sub 中建立結構定義:
例如,下列結構定義會定義倉庫的商品目錄,首先使用 Avro 格式,然後使用 Protocol Buffer 格式。
Apache Avro 格式
{
 "type" : "record",
 "name" : "Avro",
 "fields" : [
   {
     "name" : "ProductName",
     "type" : "string",
     "default": ""
   },
   {
     "name" : "SKU",
     "type" : "int",
     "default": 0
   },
   {
     "name" : "InStock",
     "type" : "boolean",
     "default": false
   }
 ]
}
通訊協定緩衝區格式
syntax = "proto3";
message ProtocolBuffer {
  string product_name = 1;
  int32 SKU = 2;
  bool in_stock = 3;
}
關於結構定義的重要資訊
以下是關於建立及管理 Pub/Sub 結構定義的重要資訊。
- 如要讓結構定義與 Pub/Sub 搭配運作,您必須只定義一個頂層 type。不支援參照其他類型的匯入陳述式。 
- 您可以將相同的結構定義與多個主題建立關聯。 
- 您可以手動測試訊息是否符合結構定義。 
- 請勿在結構定義欄位名稱中加入個人識別資訊 (PII) 或安全性資料等機密資訊。 
結構定義的配額和限制
結構定義有下列限制:
- 架構定義欄位大小不得超過 300 KB。 
- 一個專案最多可包含 10,000 個結構定義。 
- 單一結構定義最多只能有 20 個修訂版本。 - 如要瞭解 Pub/Sub 相關的結構定義和限制,請參閱「Pub/Sub 配額和限制」。