您可以使用 Google Cloud CLI 或向 Eventarc Publishing REST API 发送请求,以受支持的格式直接将 CloudEvents 事件发布到 Eventarc Advanced 总线。您还可以使用 Eventarc 客户端库,通过支持的语言访问 Eventarc API。
消息必须符合 CloudEvents 规范。
gcloud
打开终端。
您可以使用
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
REST API
如需将事件发布到总线,请使用 projects.locations.messageBuses.publish
方法。
在使用任何请求数据之前,请先进行以下替换:
- 公交车的完整资源名称,格式为
projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME
替换以下内容:
PROJECT_ID
:公交项目的 Google Cloud 项目 ID。LOCATION
:部署此总线的区域,例如us-central1
。BUS_NAME
:要发布事件的总线的名称。
SPEC_VERSION
:事件使用的 CloudEvents 规范版本,例如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\"}" }
如需发送您的请求,请展开以下选项之一:
如果成功,服务器将返回 HTTP 200 OK
状态代码以及 JSON 格式的空响应正文:
200 OK {}