Publique eventos diretamente

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

  1. Abra um terminal.

  2. 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
    Ou:
    gcloud eventarc message-buses publish BUS_NAME \
        --json-message=JSON_MESSAGE
    Ou:
    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 que source + 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 que source + id é único para cada evento distinto.
  • CONTENT_TYPE (opcional): o tipo de conteúdo do valor data. Se um evento de formato JSON não tiver um atributo datacontenttype, assume-se que os dados são um valor JSON em conformidade com o tipo de suporte application/json.
  • DATA_PAYLOAD (opcional): a carga útil do evento codificada no formato de multimédia especificado por datacontenttype e em conformidade com dataschema 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

{}

O que se segue?