Pode publicar um evento CloudEvents diretamente num barramento Eventarc Advanced num formato suportado através da CLI Google Cloud ou enviando um pedido para a API REST Eventarc Publishing. Também pode usar as bibliotecas cliente do Eventarc para aceder às APIs Eventarc a partir de um idioma suportado.
Antes de começar
Se ainda não o fez, ative a API Eventarc e a API Eventarc Publishing.
gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com
Publicar diretamente
A mensagem de evento que publica diretamente tem de estar em conformidade com a especificação CloudEvents.
gcloud
Abra um terminal.
Pode publicar eventos num barramento através do comando
gcloud eventarc message-buses publish
. Por exemplo:gcloud eventarc message-buses publish BUS_NAME \ --avro-message=AVRO_MESSAGE
gcloud eventarc message-buses publish BUS_NAME \ --json-message=JSON_MESSAGE
gcloud 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
Substitua o seguinte:
BUS_NAME
: o ID ou o identificador totalmente qualificado do barramento para o qual publicar o evento.
Tem de usar apenas um dos seguintes elementos:
AVRO_MESSAGE
: a mensagem de evento num formato Avro de acordo com esta especificação.JSON_MESSAGE
: a mensagem de evento num formato JSON de acordo com esta especificação.DATA_PAYLOAD
: os dados de um evento publicado.
Se usar a flag
--event-data
, também tem de usar o seguinte:EVENT_ID
: o identificador do evento. Os produtores de eventos têm de garantir quesource
+id
é exclusivo para cada evento distinto.EVENT_SOURCE
: a origem do evento de um evento publicado.EVENT_TYPE
: o tipo de evento relacionado com a ocorrência de origem.
Se usar a sinalização
--event-data
, pode usar opcionalmente o seguinte:EVENT_ATTRIBUTE
: os atributos de um evento publicado. Pode repetir a flag--event-attributes
para adicionar mais atributos.Tenha em atenção que os eventos podem incluir qualquer número de atributos CloudEvents personalizados adicionais com nomes distintos (também conhecidos como atributos de extensão).
Exemplos:
gcloud 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 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"} }'
API REST
Para publicar um evento num barramento, use o método
projects.locations.messageBuses.publish
.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- O nome completo do recurso do autocarro no formato
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME
Substitua o seguinte:
PROJECT_ID
: o Google Cloud ID do projeto do projeto de autocarro.LOCATION
: a região em que o autocarro está implementado, por exemplo,us-central1
.BUS_NAME
: o nome do autocarro para o qual publicar o evento.
SPEC_VERSION
: a versão da especificação CloudEvents que o evento usa, por exemplo,1.0
.EVENT_TYPE
: o tipo de evento relacionado com a ocorrência de origem.EVENT_SOURCE
: a origem do evento de um evento publicado.EVENT_ID
: o identificador do evento. Os produtores têm de garantir quesource
+id
é único para cada evento distinto.CONTENT_TYPE
(opcional): o tipo de conteúdo do valordata
. Se um evento de formato JSON não tiver um atributodatacontenttype
, assume-se que os dados são um valor JSON em conformidade com o tipo de suporteapplication/json
.DATA_PAYLOAD
(opcional): a carga útil do evento codificada no formato de multimédia especificado pordatacontenttype
e em conformidade comdataschema
quando esses atributos estão presentes.
Corpo JSON do pedido:
{ "jsonMessage": "{\"specversion\":\"SPEC_VERSION\", \"type\":\"EVENT_TYPE\", \"source\":\"EVENT_SOURCE\", \"id\":\"EVENT_ID\", \"datacontenttype\":\"CONTENT_TYPE\", \"data\":\"DATA_PAYLOAD\"}" }
Para enviar o seu pedido, expanda uma destas opções:
Se for bem-sucedido, o servidor devolve um código de estado HTTP 200 OK
e o corpo da resposta vazio no formato JSON:
200 OK {}