高级事件过滤¶

我们将学习哪些 Knative 功能?¶
- 触发器和代理
- Knative 如何神奇地连接一切
最终交付成果是什么样的?¶

- “已分析的评论”将(使用触发器)发送回代理,并存储到数据库中。
- 不包含脏话的评论将显示在 UI 中,情感将以表情符号显示。
实施¶
步骤 1:创建用于数据库插入的触发器¶

将以下触发器配置附加到现有的 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
到目前为止,您在集群中创建的触发器应该如下所示

验证
运行以下命令检查触发器是否创建成功
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
验证¶

现在,是魔法时刻。一切都自动连接。尝试与 UI 交互吧!
- 正常评论:当您发送不含任何“脏话”的正常评论时,它将正确显示在评论区。
- “脏话”评论:包含冒犯性或仇恨言论的评论将被过滤掉,最终将重定向到 Slack(我们将在下一节介绍)。
很简单,不是吗?这就是 Knative Eventing 如此有用的原因!您只需专注于开发每个组件,而 Knative Eventing 处理服务之间的连接和通信。每个服务都可以专注于自己的职责,而无需担心消息传递。
下一步¶

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