使用触发器和接收器¶
在上一主题中,我们使用 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 既由 CloudEvents Player 发送,也由 CloudEvents Player 接收
您可能需要刷新页面才能看到更改。
如果我想根据 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 上创建您自己的 **“函数即服务”**