Puedes publicar un evento de CloudEvents directamente en un bus avanzado de Eventarc en un formato compatible con Google Cloud CLI o enviando una solicitud a la API de REST de Eventarc Publishing. También puedes usar las bibliotecas cliente de Eventarc para acceder a las APIs de Eventarc desde un lenguaje compatible.
Antes de comenzar
Si aún no lo hiciste, habilita la API de Eventarc y la API de Eventarc Publishing.
gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com
Publicar directamente
El mensaje de evento que publicas directamente debe cumplir con la especificación de CloudEvents.
gcloud
Abre una terminal.
Puedes publicar eventos en un bus con el comando
gcloud beta eventarc message-buses publish
. Por ejemplo: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
Reemplaza lo siguiente:
BUS_NAME
: Es el ID o el identificador completamente calificado del bus en el que se publicará el evento.
Solo debes usar una de las siguientes opciones:
AVRO_MESSAGE
: Es el mensaje del evento en formato Avro según esta especificación.JSON_MESSAGE
: Es el mensaje del evento en formato JSON según esta especificación.DATA_PAYLOAD
: Son los datos de un evento publicado.
Si usas la marca
--event-data
, también debes usar lo siguiente:EVENT_ID
: Es el identificador del evento. Los productores de eventos deben asegurarse de quesource
+id
sea único para cada evento distinto.EVENT_SOURCE
: Es la fuente de eventos de un evento publicado.EVENT_TYPE
: Es el tipo de evento relacionado con el suceso original.
Si usas la marca
--event-data
, también puedes usar las siguientes opciones:EVENT_ATTRIBUTE
: Son los atributos de un evento publicado. Puedes repetir la marca--event-attributes
para agregar más atributos.Ten en cuenta que los eventos pueden incluir cualquier cantidad de atributos personalizados adicionales de CloudEvents con nombres distintos (también conocidos como atributos de extensión).
Ejemplos:
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"} }'
API de REST
Para publicar un evento en un bus, usa el método projects.locations.messageBuses.publish
.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- Nombre completo del recurso del colectivo en el formato
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME
Reemplaza lo siguiente:
PROJECT_ID
: Es el Google Cloud ID del proyecto de autobús.LOCATION
: La región en la que se implementa el colectivo, por ejemplo,us-central1
.BUS_NAME
: Es el nombre del bus en el que se publicará el evento.
SPEC_VERSION
: Es la versión de la especificación de CloudEvents que usa el evento, por ejemplo,1.0
.EVENT_TYPE
: Es el tipo de evento relacionado con el suceso original.EVENT_SOURCE
: Es la fuente del evento de un evento publicado.EVENT_ID
: Es el identificador del evento. Los productores deben asegurarse de quesource
+id
sea único para cada evento distinto.CONTENT_TYPE
(opcional): Es el tipo de contenido del valor dedata
. Si un evento con formato JSON no tiene un atributodatacontenttype
, se supone que los datos son un valor JSON que cumple con el tipo de medioapplication/json
.DATA_PAYLOAD
(opcional): Es la carga útil del evento codificada en el formato de medios especificado pordatacontenttype
y que se ajusta adataschema
cuando esos atributos están presentes.
Cuerpo JSON de la solicitud:
{ "jsonMessage": "{\"specversion\":\"SPEC_VERSION\", \"type\":\"EVENT_TYPE\", \"source\":\"EVENT_SOURCE\", \"id\":\"EVENT_ID\", \"datacontenttype\":\"CONTENT_TYPE\", \"data\":\"DATA_PAYLOAD\"}" }
Para enviar tu solicitud, expande una de estas opciones:
Si la operación se realiza correctamente, el servidor devuelve un código de estado HTTP 200 OK
y el cuerpo de respuesta vacío en formato JSON:
200 OK {}
¿Qué sigue?
- Publica eventos de fuentes de Google
- Transforma los eventos recibidos
- Cómo dar formato a los eventos recibidos