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.
El mensaje 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
: El ID o el identificador completamente calificado del bus al que se publicará el evento.
Debes usar solo uno de los siguientes:
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
: 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 evento de origen.
Si usas la marca
--event-data
, puedes usar lo siguiente de manera opcional: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 CloudEvents personalizados adicionales con nombres distintos (también conocidos como atributos de extensión).
Ejemplos:
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 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:
- El nombre de recurso completo del bus en el formato
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto de Google Cloud del proyecto de autobús.LOCATION
: Es la región en la que se implementa el bus, por ejemplo,us-central1
.BUS_NAME
: Es el nombre del bus al 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 evento de origen.EVENT_SOURCE
: Es la fuente de eventos 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 valordata
. Si un evento con formato JSON no tiene el atributodatacontenttype
, se supone que los datos son un valor JSON que cumple con el tipo de contenido multimediaapplication/json
.DATA_PAYLOAD
(opcional): Es la carga útil del evento codificada en el formato multimedia que especificadatacontenttype
y que cumple condataschema
cuando están presentes esos atributos.
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 se realiza correctamente, el servidor muestra 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
- Cómo transformar los eventos recibidos
- Formato de los eventos recibidos