直接發布事件

您可以使用 Google Cloud CLI,或向 Eventarc 發布 REST API 傳送要求,直接以支援的格式將 CloudEvents 事件發布至 Eventarc 進階匯流排。您也可以使用 Eventarc 用戶端程式庫,透過支援的語言存取 Eventarc API。

訊息必須符合 CloudEvents 規格

gcloud

  1. 開啟終端機。

  2. 您可以使用 gcloud beta eventarc message-buses publish 指令,將事件發布至中繼。例如:

    gcloud beta eventarc message-buses publish BUS_NAME \
        --avro-message=AVRO_MESSAGE
    或:
    gcloud beta eventarc message-buses publish BUS_NAME \
        --json-message=JSON_MESSAGE
    或:
    gcloud beta eventarc message-buses publish BUS_NAME \
        --event-data=DATA_PAYLOAD \
        --event-id=EVENT_ID \
        --event-source=EVENT_SOURCE \
        --event-type=EVENT_TYPE \
        --event-attributes=EVENT_ATTRIBUTE

    更改下列內容:

    • BUS_NAME:要發布事件的匯流程 ID 或完整修飾 ID。

    您只能使用下列其中一種

    • AVRO_MESSAGE:根據此規格,以 Avro 格式呈現的事件訊息。
    • JSON_MESSAGE:根據此規格,以 JSON 格式傳送事件訊息。
    • DATA_PAYLOAD:已發布事件的資料。

    如果使用 --event-data 標記,則必須同時使用下列標記:

    • EVENT_ID:事件 ID。事件製作者必須確保 source + id 對每個獨立事件而言都是不重複的。
    • EVENT_SOURCE:已發布事件的事件來源。
    • EVENT_TYPE:與原始事件相關的事件類型。

    如果使用 --event-data 標記,您可以選擇使用下列標記:

    • EVENT_ATTRIBUTE:已發布事件的屬性。您可以重複使用 --event-attributes 標記來新增更多屬性。

      請注意,事件可能包含任意數量的額外自訂 CloudEvents 屬性,這些屬性具有不同的名稱 (也稱為擴充屬性)。

範例:

gcloud beta eventarc message-buses publish my-bus \
    --event-data='{"key": "hello-world-data"}' \
    --event-id=hello-world-id-1234 \
    --event-source=hello-world-source \
    --event-type=hello-world-type \
    --event-attributes="datacontenttype=application/json"

gcloud beta eventarc message-buses publish my-bus --json-message='{
    "specversion" : "1.0",
    "type" :"com.example.someevent",
    "source" : "google.cloud.storage.object.v1.finalized",
    "id" : "A234-1234-1234",
    "time" : "2024-04-05T17:31:00Z",
    "bucket" : "bucketName",
    "datacontenttype" : "application/json",
    "data":{"key": "value"}
}'

REST API

如要將事件發布至匯流排,請使用 projects.locations.messageBuses.publish 方法。

使用任何要求資料之前,請先替換以下項目:

  • projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME 格式表示的總線完整資源名稱

    更改下列內容:

    • PROJECT_ID:匯入專案的 Google Cloud專案 ID。
    • LOCATION:部署公車的區域,例如 us-central1
    • BUS_NAME:要發布事件的匯流排名稱。
  • SPEC_VERSION:事件使用的 CloudEvents 規格版本,例如 1.0
  • EVENT_TYPE:與原始事件相關的事件類型。
  • EVENT_SOURCE:已發布事件的事件來源。
  • EVENT_ID:事件 ID。製作者必須確保每個獨立事件的 source + id 皆不重複。
  • CONTENT_TYPE (選用):data 值的內容類型。如果 JSON 格式事件沒有 datacontenttype 屬性,系統會假設資料是符合 application/json 媒體類型的 JSON 值。
  • DATA_PAYLOAD (選用):事件酬載,已編碼至 datacontenttype 指定的媒體格式,並在這些屬性存在時遵循 dataschema

JSON 要求主體:

{
"jsonMessage":
  "{\"specversion\":\"SPEC_VERSION\",
  \"type\":\"EVENT_TYPE\",
  \"source\":\"EVENT_SOURCE\",
  \"id\":\"EVENT_ID\",
  \"datacontenttype\":\"CONTENT_TYPE\",
  \"data\":\"DATA_PAYLOAD\"}"
}

如要傳送要求,請展開以下其中一個選項:

如果成功,伺服器會傳回 HTTP 200 OK 狀態碼,並以 JSON 格式傳回空白的回應內文:

200 OK

{}

後續步驟