11.6.3.2. 云事件触发的功能
收到传入的云事件时,由 CloudEvents Go SDK 调用该事件。调用使用 Event
类型作为参数。
您可以使用 Go Context 作为功能合同中的可选参数,如支持的功能签名列表中所示:
支持的功能签名
Handle() Handle() error Handle(context.Context) Handle(context.Context) error Handle(cloudevents.Event) Handle(cloudevents.Event) error Handle(context.Context, cloudevents.Event) Handle(context.Context, cloudevents.Event) error Handle(cloudevents.Event) *cloudevents.Event Handle(cloudevents.Event) (*cloudevents.Event, error) Handle(context.Context, cloudevents.Event) *cloudevents.Event Handle(context.Context, cloudevents.Event) (*cloudevents.Event, error)
11.6.3.2.1. CloudEvent 触发器示例
接收云事件,其中包含 data 属性中的 JSON 字符串:
{ "customerId": "0123456", "productId": "6543210" }
若要访问此数据,必须定义一个结构,用于映射云事件数据中的属性,并从传入事件检索数据。以下示例使用 Purchase
结构:
type Purchase struct { CustomerId string `json:"customerId"` ProductId string `json:"productId"` } func Handle(ctx context.Context, event cloudevents.Event) (err error) { purchase := &Purchase{} if err = event.DataAs(purchase); err != nil { fmt.Fprintf(os.Stderr, "failed to parse incoming CloudEvent %s\n", err) return } // ... }
另外,一个 Go encoding/json
软件包也可用于以字节阵列的形式直接以 JSON 形式访问云事件:
func Handle(ctx context.Context, event cloudevents.Event) { bytes, err := json.Marshal(event) // ... }