使用触发器和接收器¶
在上一个主题中,我们使用 CloudEvents Player 作为事件源向 Broker 发送事件。现在我们希望事件从 Broker 流向事件接收器。
在本主题中,我们将使用 CloudEvents Player 作为接收器和源。这意味着我们将使用 CloudEvents Player 发送和接收事件。我们将使用触发器监听 Broker 中的事件并将其发送到接收器。
创建你的第一个触发器¶
创建一个触发器,监听来自事件源的 CloudEvents 并将它们放入接收器,该接收器也是 CloudEvents Player 应用程序。
要创建触发器,请运行命令
kn trigger create cloudevents-trigger --sink cloudevents-player --broker example-broker
预期输出
Trigger 'cloudevents-trigger' successfully created in namespace 'default'.
-
将以下 YAML 复制到名为
ce-trigger.yaml的文件中apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: name: cloudevents-trigger annotations: knative-eventing-injection: enabled spec: broker: example-broker subscriber: ref: apiVersion: serving.knative.dev/v1 kind: Service name: cloudevents-player -
通过运行以下命令创建触发器
kubectl apply -f ce-trigger.yaml预期输出
trigger.eventing.knative.dev/cloudevents-trigger created
我的触发器正在监听哪些 CloudEvents?
因为我们没有在 kn 命令中指定 --filter,所以触发器正在监听进入 Broker 的任何 CloudEvents。
展开下一条注释以查看如何使用过滤器。
现在,当我们回到 CloudEvents Player 并发送一个事件时,我们看到 CloudEvents Player 既发送也接收 CloudEvents

您可能需要刷新页面才能看到您的更改。
如果我想过滤 CloudEvent 属性怎么办?
首先,删除现有的触发器
kn trigger delete cloudevents-trigger
kn trigger create cloudevents-player-filter --sink cloudevents-player --broker example-broker --filter type=some-type
如果您发送一个类型为 some-type 的 CloudEvent,它会反映在 CloudEvents Player UI 中。触发器会忽略任何其他类型。
您可以根据您想要的 CloudEvent 的任何方面进行过滤。
有些人称之为 “事件驱动架构”,可用于在 Kubernetes 上创建您自己的 “函数即服务”