建立 RabbitMQSource¶
本主題說明如何建立 RabbitMQSource。
先決條件¶
- 您已安裝 Knative Eventing
- 您已安裝 CertManager v1.5.4 - 與 RabbitMQ Messaging Topology Operator 最容易整合
- 您已安裝 RabbitMQ Messaging Topology Operator - 我們的建議是使用具有 CertManager 的最新版本
- 一個運作中的 RabbitMQ 執行個體,我們建議使用 RabbitMQ Cluster Operator 建立一個。如需有關設定
RabbitmqCluster
CRD 的詳細資訊,請參閱 RabbitMQ 網站
安裝 RabbitMQ 控制器¶
-
執行以下命令安裝 RabbitMQSource 控制器
kubectl apply -f https://github.com/knative-extensions/eventing-rabbitmq/releases/download/knative-v1.16.0/rabbitmq-source.yaml
-
確認
rabbitmq-controller-manager
和rabbitmq-webhook
正在執行kubectl get deployments.apps -n knative-sources
範例輸出
NAME READY UP-TO-DATE AVAILABLE AGE rabbitmq-controller-manager 1/1 1 1 3s rabbitmq-webhook 1/1 1 1 4s
建立服務¶
-
以 YAML 檔案形式建立
event-display
服務apiVersion: serving.knative.dev/v1 kind: Service metadata: name: event-display namespace: default spec: template: spec: containers: - # This corresponds to # https://github.com/knative/eventing/tree/main/cmd/event_display/main.go image: gcr.io/knative-releases/knative.dev/eventing/cmd/event_display
-
執行以下命令套用 YAML 檔案
其中kubectl apply -f <filename>.yaml
<filename>
是您在上一個步驟中建立的檔案名稱。範例輸出
service.serving.knative.dev/event-display created
-
執行以下命令,確保服務 Pod 正在執行
kubectl get pods
Pod 名稱的前綴為
event-display
NAME READY STATUS RESTARTS AGE event-display-00001-deployment-5d5df6c7-gv2j4 2/2 Running 0 72s
建立 RabbitMQSource 物件¶
-
使用以下範本建立 YAML 檔案
其中apiVersion: sources.knative.dev/v1alpha1 kind: RabbitmqSource metadata: name: <source-name> spec: rabbitmqClusterReference: # Configure name if a RabbitMQ Cluster Operator is being used. name: <cluster-name> # Configure connectionSecret if an external RabbitMQ cluster is being used. connectionSecret: name: rabbitmq-secret-credentials rabbitmqResourcesConfig: parallelism: 10 exchangeName: "eventing-rabbitmq-source" queueName: "eventing-rabbitmq-source" delivery: retry: 5 backoffPolicy: "linear" backoffDelay: "PT1S" sink: ref: apiVersion: serving.knative.dev/v1 kind: Service name: event-display
<source-name>
是您想要為 RabbitMQSource 物件設定的名稱。<cluster-name>
是您先前建立的 RabbitMQ 叢集名稱。
注意
您不能同時設定
name
和connectionSecret
,因為name
是給與來源位於相同叢集中執行的 RabbitMQ Cluster Operator 執行個體使用,而connectionSecret
是給外部 RabbitMQ 伺服器使用。 -
執行以下命令套用 YAML 檔案
其中kubectl apply -f <filename>
<filename>
是您在上一個步驟中建立的檔案名稱。
驗證¶
檢查 event-display 服務,查看其是否正在接收事件。來源可能需要一些時間才能開始將事件傳送到接收器。
kubectl -l='serving.knative.dev/service=event-display' logs -c user-container
☁️ cloudevents.Event
Context Attributes,
specversion: 1.0
type: dev.knative.rabbitmq.event
source: /apis/v1/namespaces/default/rabbitmqsources/<source-name>
subject: f147099d-c64d-41f7-b8eb-a2e53b228349
id: f147099d-c64d-41f7-b8eb-a2e53b228349
time: 2021-12-16T20:11:39.052276498Z
datacontenttype: application/json
Data,
{
...
Random Data
...
}
清除¶
-
刪除 RabbitMQSource
kubectl delete -f <source-yaml-filename>
-
刪除 RabbitMQ 認證密碼
kubectl delete -f <secret-yaml-filename>
-
刪除事件顯示服務
kubectl delete -f <service-yaml-filename>
其他資訊¶
- 如需更多範例,請造訪
eventing-rabbitmq
Github 儲存庫範例目錄 - 若要報告錯誤或要求功能,請在
eventing-rabbitmq
Github 儲存庫中開啟問題。