您可以使用 Google Cloud CLI 或向 Eventarc Publishing REST API 发送请求,以受支持的格式直接将 CloudEvents 事件发布到 Eventarc Advanced 总线。您还可以使用 Eventarc 客户端库,通过支持的语言访问 Eventarc API。
消息必须符合 CloudEvents 规范。
打开终端。
您可以使用
gcloud beta eventarc message-buses publish
命令将事件发布到总线。例如: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 替换以下内容:
BUS_NAME
:要发布事件的总线的 ID 或完全限定标识符。
您只能使用以下一项:
如果使用
--event-data
标志,则还必须使用以下内容:EVENT_ID
:事件标识符。事件生产方必须确保每个不同的事件的source
+id
都是唯一的。EVENT_SOURCE
:已发布事件的事件来源。EVENT_TYPE
:与起始发生情况相关的事件类型。
如果使用
--event-data
标志,您可以视需要使用以下选项:EVENT_ATTRIBUTE
:已发布事件的属性。您可以重复使用--event-attributes
标志来添加更多属性。请注意,事件可以包含任意数量的具有不同名称的自定义 CloudEvents 属性(也称为扩展属性)。
示例:
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
如需将事件发布到总线,请使用 projects.locations.messageBuses.publish
方法。
在使用任何请求数据之前,请先进行以下替换:
- 公交车的完整资源名称,格式为
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME
替换以下内容:
:公交项目的 Google Cloud项目 ID。PROJECT_ID
:部署此总线的区域,例如LOCATION us-central1
。
:要发布事件的总线的名称。BUS_NAME
:事件使用的 CloudEvents 规范版本,例如SPEC_VERSION 1.0
。
:与起始发生情况相关的事件类型。EVENT_TYPE
:已发布事件的事件来源。EVENT_SOURCE
:事件标识符。 生产者必须确保对于每个不同的事件,EVENT_ID source
+id
都是唯一的。
(可选):CONTENT_TYPE data
值的内容类型。如果 JSON 格式事件没有datacontenttype
属性,则系统会假定数据是符合application/json
媒体类型的 JSON 值。
(可选):事件载荷编码为DATA_PAYLOAD datacontenttype
指定的媒体格式,并遵循dataschema
(如果存在这些属性)。
请求 JSON 正文:
{ "jsonMessage": "{\"specversion\":\"SPEC_VERSION \", \"type\":\"EVENT_TYPE \", \"source\":\"EVENT_SOURCE \", \"id\":\"EVENT_ID \", \"datacontenttype\":\"CONTENT_TYPE \", \"data\":\"DATA_PAYLOAD \"}" }
如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
cat > request.json << 'EOF' { "jsonMessage": "{\"specversion\":\"SPEC_VERSION \", \"type\":\"EVENT_TYPE \", \"source\":\"EVENT_SOURCE \", \"id\":\"EVENT_ID \", \"datacontenttype\":\"CONTENT_TYPE \", \"data\":\"DATA_PAYLOAD \"}" } EOF
然后,执行以下命令以发送 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)
将请求正文保存在名为 request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:
@' { "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
然后,执行以下命令以发送 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(浏览器)
复制请求正文并打开方法参考页面。APIs Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。 将请求正文粘贴到此工具中,填写任何其他必填字段,然后点击执行。
如果成功,服务器将返回 HTTP 200 OK
状态代码以及 JSON 格式的空响应正文:
200 OK {}