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
Apri un terminale.
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
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
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 chesource
+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 esempious-central1
.BUS_NAME
: il nome del bus a cui pubblicare l'evento.
SPEC_VERSION
: la versione della specifica CloudEvents utilizzata dall'evento, ad esempio1.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 chesource
+id
sia univoco per ogni evento distinto.CONTENT_TYPE
(facoltativo): il tipo di contenuti del valoredata
. Se un evento in formato JSON non ha l'attributodatacontenttype
, si presume che i dati siano un valore JSON conforme al tipo di mediaapplication/json
.DATA_PAYLOAD
(facoltativo): il payload dell'evento codificato nel formato multimediale specificato dadatacontenttype
e conforme adataschema
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 {}