跳至内容

使用触发器和接收器

在上一主题中,我们使用 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 既由 CloudEvents Player 发送,也由 CloudEvents Player 接收

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 共享,用于此目的。 了解更多。