使用觸發器和接收器¶
在上一個主題中,我們使用 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'.
-
將以下 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
-
執行命令以建立觸發器
kubectl apply -f ce-trigger.yaml
預期輸出
trigger.eventing.knative.dev/cloudevents-trigger created
我的觸發器正在監聽哪些 CloudEvents?
因為我們在 kn
命令中沒有指定 --filter
,所以觸發器正在監聽進入 Broker 的任何 CloudEvents。
展開下一個注意事項以了解如何使用篩選器。
現在,當我們回到 CloudEvents Player 並傳送事件時,我們看到 CloudEvents 會同時由 CloudEvents Player 傳送和接收
您可能需要重新整理頁面才能看到您的變更。
如果我想要篩選 CloudEvent 屬性該怎麼辦?
首先,刪除您現有的觸發器
kn trigger delete cloudevents-trigger
kn trigger create cloudevents-player-filter --sink cloudevents-player --broker example-broker --filter type=some-type
如果您傳送類型為 some-type
的 CloudEvent,它會反映在 CloudEvents Player UI 中。觸發器會忽略任何其他類型。
您可以篩選您想要的 CloudEvent 的任何方面。
有些人稱之為「事件驅動架構」,可用於在 Kubernetes 上建立您自己的「函式即服務」