跳至內容

建立 RabbitMQSource

stage version

本主題說明如何建立 RabbitMQSource。

先決條件

  1. 您已安裝 Knative Eventing
  2. 您已安裝 CertManager v1.5.4 - 與 RabbitMQ Messaging Topology Operator 最容易整合
  3. 您已安裝 RabbitMQ Messaging Topology Operator - 我們的建議是使用具有 CertManager 的最新版本
  4. 一個運作中的 RabbitMQ 執行個體,我們建議使用 RabbitMQ Cluster Operator 建立一個。如需有關設定 RabbitmqCluster CRD 的詳細資訊,請參閱 RabbitMQ 網站

安裝 RabbitMQ 控制器

  1. 執行以下命令安裝 RabbitMQSource 控制器

    kubectl apply -f https://github.com/knative-extensions/eventing-rabbitmq/releases/download/knative-v1.16.0/rabbitmq-source.yaml
    
  2. 確認 rabbitmq-controller-managerrabbitmq-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
    

建立服務

  1. 以 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
    
  2. 執行以下命令套用 YAML 檔案

    kubectl apply -f <filename>.yaml
    
    其中 <filename> 是您在上一個步驟中建立的檔案名稱。

    範例輸出

    service.serving.knative.dev/event-display created
    

  3. 執行以下命令,確保服務 Pod 正在執行

    kubectl get pods
    

    Pod 名稱的前綴為 event-display

    NAME                                            READY     STATUS    RESTARTS   AGE
    event-display-00001-deployment-5d5df6c7-gv2j4   2/2       Running   0          72s
    

建立 RabbitMQSource 物件

  1. 使用以下範本建立 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 叢集名稱。

    注意

    您不能同時設定 nameconnectionSecret,因為 name 是給與來源位於相同叢集中執行的 RabbitMQ Cluster Operator 執行個體使用,而 connectionSecret 是給外部 RabbitMQ 伺服器使用。

  2. 執行以下命令套用 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
      ...
    }

清除

  1. 刪除 RabbitMQSource

    kubectl delete -f <source-yaml-filename>
    
  2. 刪除 RabbitMQ 認證密碼

    kubectl delete -f <secret-yaml-filename>
    
  3. 刪除事件顯示服務

    kubectl delete -f <service-yaml-filename>
    

其他資訊

我們使用分析和 Cookie 來了解網站流量。您使用我們網站的相關資訊會與 Google 分享,以達成此目的。深入瞭解。