高级事件过滤¶
我们将学习哪些 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 事件如此有用的原因!您只需要专注于开发每个组件,而 Knative 事件处理服务之间的连接和通信。每个服务都可以专注于自己的职责,而无需担心消息传递。
下一步¶
您已经构建了您的事件驱动架构。现在是时候将其连接到外部服务以进一步增强您的书店应用程序了。在下一节中,我们将使书店能够将通知发送到您的 Slack 工作区!