コンテンツへスキップ

高度なイベントフィルタリング

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 Eventingは非常に役立ちます!Knative Eventingはサービス間の接続と通信を処理するため、各コンポーネントの開発に集中するだけで済みます。各サービスは、メッセージ配信を心配することなく、それぞれの責任に集中できます。

次のステップ

Image

イベント駆動アーキテクチャを構築しました。次は、外部サービスに接続して書店アプリケーションをさらに強化します。次のセクションでは、書店がSlackワークスペースに通知を送信できるようにします!

Camel KでSlackを接続するへ移動

サイトトラフィックを理解するために、分析とCookieを使用しています。サイトの使用に関する情報は、その目的でGoogleと共有されます。詳細はこちら。