Pubblicare gli eventi direttamente

Puoi pubblicare un evento CloudEvents direttamente in un bus Eventarc Advanced in un formato supportato utilizzando Google Cloud CLI o inviando una richiesta all'API REST Eventarc Publishing. Puoi anche utilizzare le librerie client Eventarc per accedere alle API Eventarc da un linguaggio supportato.

Il messaggio deve essere conforme alla specifica CloudEvents.

gcloud

  1. Apri un terminale.

  2. Puoi pubblicare eventi in un bus utilizzando il comando gcloud beta eventarc message-buses publish. Ad esempio:

    gcloud beta eventarc message-buses publish BUS_NAME \
        --avro-message=AVRO_MESSAGE
    In alternativa:
    gcloud beta eventarc message-buses publish BUS_NAME \
        --json-message=JSON_MESSAGE
    In alternativa:
    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

    Sostituisci quanto segue:

    • BUS_NAME: l'ID o l'identificatore completo del bus a cui pubblicare l'evento.

    Devi utilizzare solo uno dei seguenti documenti:

    • AVRO_MESSAGE: il messaggio dell'evento in un formato Avro secondo questa specifica.
    • JSON_MESSAGE: il messaggio dell'evento in formato JSON secondo questa specifica.
    • DATA_PAYLOAD: i dati di un evento pubblicato.

    Se utilizzi il flag --event-data, devi utilizzare anche quanto segue:

    • EVENT_ID: l'identificatore dell'evento. I produttori di eventi devono assicurarsi che source + id sia univoco per ogni evento distinto.
    • EVENT_SOURCE: l'origine evento di un evento pubblicato.
    • EVENT_TYPE: il tipo di evento correlato all'occorrenza di origine.

    Se utilizzi il flag --event-data, puoi facoltativamente utilizzare quanto segue:

    • EVENT_ATTRIBUTE: gli attributi di un evento pubblicato. Puoi ripetere il flag --event-attributes per aggiungere altri attributi.

      Tieni presente che gli eventi possono includere un numero qualsiasi di attributi CloudEvents personalizzati aggiuntivi con nomi distinti (noti anche come attributi di estensione).

Esempi:

gcloud beta eventarc message-buses publish my-bus \
    --event-id=1234 \
    --event-type=event-provider.event.v1.eventType \
    --event-source="//event-provider/event/source" \
    --event-data='{"key": "value"}' \
    --event-attributes=attribute1=value

gcloud beta eventarc message-buses publish my-bus --json-message @- << EOF
{
    "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"}
}
EOF

API REST

Per pubblicare un evento in un bus, utilizza il metodo projects.locations.messageBuses.publish.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • Il nome completo della risorsa del bus nel formato projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME

    Sostituisci quanto segue:

    • PROJECT_ID: l' Google Cloud ID progetto per il progetto del bus.
    • LOCATION: la regione in cui è eseguito il deployment del bus, ad esempio us-central1.
    • BUS_NAME: il nome del bus a cui pubblicare l'evento.
  • SPEC_VERSION: la versione della specifica CloudEvents utilizzata dall'evento, ad esempio 1.0.
  • EVENT_TYPE: il tipo di evento correlato all'occorrenza di origine.
  • EVENT_SOURCE: l'origine di un evento pubblicato.
  • EVENT_ID: l'identificatore dell'evento. I produttori devono assicurarsi che source + id sia univoco per ogni evento distinto.
  • CONTENT_TYPE (facoltativo): il tipo di contenuti del valore data. Se un evento in formato JSON non ha l'attributo datacontenttype, si presume che i dati siano un valore JSON conforme al tipo di media application/json.
  • DATA_PAYLOAD (facoltativo): il payload dell'evento codificato nel formato multimediale specificato da datacontenttype e conforme a dataschema quando questi attributi sono presenti.

Corpo JSON della richiesta:

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

Per inviare la richiesta, espandi una di queste opzioni:

In caso di esito positivo, il server restituisce un codice di stato HTTP 200 OK e il corpo della risposta vuoto in formato JSON:

200 OK

{}

Passaggi successivi