跳到内容

使用触发器和接收器

在上一个主题中,我们使用 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'.
  1. 将以下 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
    

  2. 通过运行以下命令创建触发器

    kubectl apply -f ce-trigger.yaml
    

    预期输出

    trigger.eventing.knative.dev/cloudevents-trigger created
    
我的触发器正在监听哪些 CloudEvents?

因为我们没有在 kn 命令中指定 --filter,所以触发器正在监听进入 Broker 的任何 CloudEvents。

展开下一条注释以查看如何使用过滤器。

现在,当我们回到 CloudEvents Player 并发送一个事件时,我们看到 CloudEvents Player 既发送也接收 CloudEvents

CloudEvents Player user interface

您可能需要刷新页面才能看到您的更改。

如果我想过滤 CloudEvent 属性怎么办?

首先,删除现有的触发器

  kn trigger delete cloudevents-trigger
现在让我们添加一个监听特定 CloudEvent 类型的触发器
  kn trigger create cloudevents-player-filter --sink cloudevents-player  --broker example-broker --filter type=some-type

如果您发送一个类型为 some-type 的 CloudEvent,它会反映在 CloudEvents Player UI 中。触发器会忽略任何其他类型。

您可以根据您想要的 CloudEvent 的任何方面进行过滤。

有些人称之为 “事件驱动架构”,可用于在 Kubernetes 上创建您自己的 “函数即服务” 🎉 🌮 🔥

我们使用分析和 cookie 来了解网站流量。有关您使用我们网站的信息会与 Google 共享以达到此目的。了解更多。