您可以使用 Google Cloud CLI 或通过向 Eventarc Publishing REST API 发送请求,以支持的格式将 CloudEvents 事件直接发布到 Eventarc 高级总线。您还可以使用 Eventarc 客户端库,通过支持的语言访问 Eventarc API。
准备工作
如果尚未启用,请启用 Eventarc API 和 Eventarc Publishing API。
gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com
直接发布
您直接发布的事件消息必须符合 CloudEvents 规范。
gcloud
- 打开终端。 
- 您可以使用 - gcloud eventarc message-buses publish命令将事件发布到总线。例如:或:- gcloud eventarc message-buses publish BUS_NAME \ --avro-message=AVRO_MESSAGE 或:- gcloud eventarc message-buses publish BUS_NAME \ --json-message=JSON_MESSAGE - gcloud 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 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 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"} }'
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
{}