我们正在考虑使用CloudEvents作为系统中生成的事件的消息信封,并使用AsyncAPI定义这些消息。
我们使用CloudEventstype
属性来识别每个事件类型,每个type
使用不同的data
属性模式。虽然我已经弄清楚如何使用AsyncAPI定义单个事件结构,但我无法确定如何将type
属性设置为该事件类型所需的值。
似乎误用了enum
关键字,但这是迄今为止我能够将事件类型与属性关联起来的唯一方法,如下例所示。在AsyncAPI规范中实现这些固定属性的定义是否有一个公认的模式?
channels:
user:
subscribe:
message:
payload:
$ref: '#/components/schemas/firstEventPayload'
components:
schemas:
firstEventPayload:
type: object
allOf:
- $ref: 'https://raw.githubusercontent.com/cloudevents/spec/v1.0.1/spec.json'
properties:
type:
type: string
enum: [test.cloud.event.new-user]
data:
type: object
properties:
userId:
type: string
format: uuid
email:
type: string
format: email
感谢developers.redhat.com为cloudevent/spec
$ref
在JSON模式(AsyncAPI模式是它的超集)中,您也可以使用const
,如:
type:
type: string
const: test.cloud.event.new-user