É possível publicar um evento do CloudEvents diretamente em um bus do Eventarc Advanced em um formato compatível usando a CLI do Google Cloud ou enviando uma solicitação para a API REST do Eventarc Publishing. Também é possível usar as bibliotecas de cliente do Eventarc para acessar as APIs do Eventarc em uma linguagem com suporte.
A mensagem precisa estar em conformidade com a especificação CloudEvents.
Abra um terminal.
É possível publicar eventos em um barramento usando o comando
gcloud beta eventarc message-buses publish
. Exemplo: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 Substitua:
BUS_NAME
: o ID ou identificador totalmente qualificado do barramento em que o evento será publicado.
Use apenas uma das seguintes opções:
AVRO_MESSAGE
: a mensagem do evento em um formato Avro de acordo com esta especificação.JSON_MESSAGE
: a mensagem do evento em um formato JSON de acordo com esta especificação.DATA_PAYLOAD
: os dados de um evento publicado.
Se você usar a flag
--event-data
, também precisará usar o seguinte:EVENT_ID
: o identificador do evento. Os produtores de eventos precisam garantir quesource
+id
sejam exclusivos para cada evento.EVENT_SOURCE
: a origem de um evento publicado.EVENT_TYPE
: o tipo de evento relacionado à ocorrência de origem.
Se você usar a flag
--event-data
, poderá usar o seguinte:EVENT_ATTRIBUTE
: os atributos de um evento publicado. Você pode repetir a flag--event-attributes
para adicionar mais atributos.Os eventos podem incluir qualquer número de atributos personalizados do CloudEvents com nomes distintos (também conhecidos como atributos de extensão).
Exemplos:
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
Para publicar um evento em um bus, use o
método
projects.locations.messageBuses.publish
.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- O nome completo do recurso do barramento no formato
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME
Substitua:
: o ID do projeto Google Cloudpara o projeto de barramento.PROJECT_ID
: a região em que o barramento é implantado, por exemplo,LOCATION us-central1
.
: o nome do bus em que o evento será publicado.BUS_NAME
: a versão da especificação do CloudEvents que o evento usa. Por exemplo,SPEC_VERSION 1.0
.
: o tipo de evento relacionado à ocorrência de origem.EVENT_TYPE
: a origem do evento publicado.EVENT_SOURCE
: o identificador do evento. Os produtores precisam garantir queEVENT_ID source
+id
sejam exclusivos para cada evento.
(opcional): o tipo de conteúdo do valorCONTENT_TYPE data
. Se um evento de formato JSON não tiver o atributodatacontenttype
, será presumido que os dados são um valor JSON em conformidade com o tipo de mídiaapplication/json
.
(opcional): o payload do evento codificado no formato de mídia especificado porDATA_PAYLOAD datacontenttype
e aderindo adataschema
quando esses atributos estão presentes.
Corpo JSON da solicitação:
{ "jsonMessage": "{\"specversion\":\"SPEC_VERSION \", \"type\":\"EVENT_TYPE \", \"source\":\"EVENT_SOURCE \", \"id\":\"EVENT_ID \", \"datacontenttype\":\"CONTENT_TYPE \", \"data\":\"DATA_PAYLOAD \"}" }
Para enviar a solicitação, expanda uma destas opções:
curl (Linux, macOS ou Cloud Shell)
Salve o corpo da solicitação em um arquivo chamado request.json
.
Execute o comando a seguir no terminal para criar ou substituir
esse arquivo no diretório atual:
cat > request.json << 'EOF' { "jsonMessage": "{\"specversion\":\"SPEC_VERSION \", \"type\":\"EVENT_TYPE \", \"source\":\"EVENT_SOURCE \", \"id\":\"EVENT_ID \", \"datacontenttype\":\"CONTENT_TYPE \", \"data\":\"DATA_PAYLOAD \"}" } EOF
Depois execute o comando a seguir para enviar a solicitação REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://eventarcpublishing.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /messageBuses/BUS_NAME :publish"
PowerShell (Windows)
Salve o corpo da solicitação em um arquivo chamado request.json
.
Execute o comando a seguir no terminal para criar ou substituir
esse arquivo no diretório atual:
@' { "jsonMessage": "{\"specversion\":\"SPEC_VERSION \", \"type\":\"EVENT_TYPE \", \"source\":\"EVENT_SOURCE \", \"id\":\"EVENT_ID \", \"datacontenttype\":\"CONTENT_TYPE \", \"data\":\"DATA_PAYLOAD \"}" } '@ | Out-File -FilePath request.json -Encoding utf8
Depois execute o comando a seguir para enviar a solicitação REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://eventarcpublishing.googleapis.com/v1/projects/PROJECT_ID /locations/LOCATION /messageBuses/BUS_NAME :publish" | Select-Object -Expand Content
APIs Explorer (navegador)
Copie o corpo da solicitação e abra a página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Cole o corpo da solicitação nessa ferramenta, preencha todos os outros campos obrigatórios e clique em Executar.
Se bem-sucedido, o servidor retorna um código de status HTTP 200 OK
e o corpo de resposta vazio
no formato JSON:
200 OK {}