跳到内容

高级事件过滤

Image

我们将学习哪些 Knative 功能?

  • 触发器和代理
  • Knative 如何神奇地将所有内容连接在一起

最终交付物是什么样子的?

Image

  • "分析后的评论"将被发送回代理(使用触发器),并被存储到数据库中。
  • 不包含脏话的评论将显示在 UI 中,并且情绪将以表情符号显示。

实现

步骤 1:创建用于数据库插入的触发器

Image

将以下触发器配置附加到现有的 node-server/config/200-broker.yaml 文件中,然后应用。

附加node-server/config/200-broker.yaml
---
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
  name: db-insert-trigger
spec:
  broker: bookstore-broker
  filter:
    attributes: # Trigger will filter events based on BOTH the type and badwordfilter attribute
      type: moderated-comment # This is the filter that will be applied to the event, only events with the ce-type moderated-comment will be processed
      badwordfilter: good # This is the filter that will be applied to the event, only events with the ce-extension badwordfilter: good will be processed
  subscriber:
    ref:
      apiVersion: v1
      kind: Service
      name: node-server-svc
    uri: /insert # This is the path where the event will be sent to the subscriber, see /insert in node-server code: index.js
kubectl apply -f node-server/config/200-broker.yaml

应用配置后,您应该看到

broker.eventing.knative.dev/bookstore-broker unchanged
trigger.eventing.knative.dev/db-insert-trigger created

到目前为止,您在集群中创建的触发器应该如下所示

Image

验证

运行以下命令以检查触发器是否已成功创建

kubectl get triggers

您应该看到触发器处于就绪状态

NAME                BROKER             SUBSCRIBER_URI                                                       AGE     READY   REASON
db-insert-trigger   bookstore-broker   http://node-server-svc.default.svc.cluster.local/insert              5h32m   True      
sequence-trigger    bookstore-broker   http://sequence-kn-sequence-0-kn-channel.default.svc.cluster.local   5h30m   True    
log-trigger        bookstore-broker   http://event-display.default.svc.cluster.local                       5h32m   True    

验证

Image

现在,是神奇的时候了。一切都会自动连接。尝试与 UI 交互!

  • 正常评论:当您发送不包含任何“脏话”的正常评论时,它将正确地显示在评论区域。
  • “脏话”评论:包含攻击性或仇恨言论的评论将被过滤掉,最终它将被重定向到 Slack(我们将在下一节中介绍)。

很简单,不是吗?这就是 Knative 事件如此有用的原因!您只需要专注于开发每个组件,而 Knative 事件处理服务之间的连接和通信。每个服务都可以专注于自己的职责,而无需担心消息传递。

下一步

Image

您已经构建了您的事件驱动架构。现在是时候将其连接到外部服务以进一步增强您的书店应用程序了。在下一节中,我们将使书店能够将通知发送到您的 Slack 工作区!

转到 将 Slack 与 Camel K 连接

我们使用分析和 Cookie 来了解网站流量。关于您使用我们网站的信息将与 Google 共享,以达到该目的。 了解更多。