跳至內容

訂閱

建立 Channel 和 Sink 後,您可以建立訂閱以啟用事件傳遞。

訂閱包含一個 Subscription 物件,該物件指定要將事件傳遞到的 Channel 和 Sink(也稱為訂閱者)。 您還可以指定一些 Sink 特定的選項,例如如何處理失敗。

有關 Subscription 物件的詳細資訊,請參閱Subscription

建立訂閱

執行以下命令,在 Channel 和 Sink 之間建立訂閱

kn subscription create <subscription-name> \
  --channel <Group:Version:Kind>:<channel-name> \
  --sink <sink-prefix>:<sink-name> \
  --sink-reply <sink-prefix>:<sink-name> \
  --sink-dead-letter <sink-prefix>:<sink-name>
  • --channel 指定應處理的雲端事件的來源。 您必須提供 Channel 名稱。如果您沒有使用 Channel 資源支援的預設 Channel,則必須在 Channel 名稱前面加上指定 Channel 類型的 <Group:Version:Kind>。 例如,對於 Kafka 支援的 Channel,這是 messaging.knative.dev:v1beta1:KafkaChannel

  • --sink 指定事件應傳遞到的目標目的地。 預設情況下,<sink-name> 會被解讀為與訂閱位於相同命名空間的此名稱的 Knative 服務。 您可以使用以下其中一個前綴來指定 Sink 的類型

    • ksvc:Knative 服務。
    • svc:Kubernetes 服務。
    • channel:應用作目的地的 Channel。 您只能在這裡參考預設的 Channel 類型。
    • broker:Eventing Broker。
    • --sink-reply 是一個可選的引數,您可以使用它來指定將 Sink 回覆傳送到的位置。 它使用與 --sink 旗標相同的命名慣例來指定 Sink。
    • --sink-dead-letter 是一個可選的引數,您可以使用它來指定在發生故障時將 CloudEvent 傳送到的位置。 它使用與 --sink 旗標相同的命名慣例來指定 Sink。

      • ksvc:Knative 服務。
      • svc:Kubernetes 服務。
      • channel:應用作目的地的 Channel。 這裡只能參考預設的 Channel 類型。
      • broker:Eventing Broker。
    • --sink-reply--sink-dead-letter 是可選的引數。 它們可用於指定將 Sink 回覆傳送到的位置,以及在發生故障時將 CloudEvent 傳送到的位置。 兩者都使用與 --sink 旗標相同的命名慣例來指定 Sink。

此範例命令會建立一個名為 mysubscription 的訂閱,該訂閱會將來自名為 mychannel 的 Channel 的事件路由到名為 myservice 的 Knative 服務。

注意

Sink 前綴是可選的。您也可以將 --sink 的服務指定為 --sink <service-name>,並省略 ksvc 前綴。

  1. 使用以下範例為 Subscription 物件建立 YAML 檔案

    apiVersion: messaging.knative.dev/v1
    kind: Subscription
    metadata:
      name: <subscription-name>
      # Name of the Subscription.
      namespace: default
    spec:
      channel:
        apiVersion: messaging.knative.dev/v1
        kind: Channel
        name: <channel-name>
        # Name of the Channel that the Subscription connects to.
      delivery:
        # Optional delivery configuration settings for events.
        deadLetterSink:
        # When this is configured, events that failed to be consumed are sent to the deadLetterSink.
        # The event is dropped, no re-delivery of the event is attempted, and an error is logged in the system.
        # The deadLetterSink value must be a Destination.
          ref:
            apiVersion: serving.knative.dev/v1
            kind: Service
            name: <service-name>
      reply:
        # Optional configuration settings for the reply event.
        # This is the event Sink that events replied from the subscriber are delivered to.
        ref:
          apiVersion: messaging.knative.dev/v1
          kind: InMemoryChannel
          name: <service-name>
      subscriber:
        # Required configuration settings for the Subscriber. This is the event Sink that events are delivered to from the Channel.
        ref:
          apiVersion: serving.knative.dev/v1
          kind: Service
          name: <service-name>
    
  2. 執行以下命令來套用 YAML 檔案

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

列出訂閱

您可以使用 kn CLI 工具列出所有現有的訂閱。

  • 列出所有訂閱

    kn subscription list
    
  • 以 YAML 格式列出訂閱

    kn subscription list -o yaml
    

描述訂閱

您可以使用 kn CLI 工具列印有關訂閱的詳細資訊

kn subscription describe <subscription-name>

刪除訂閱

您可以使用 knkubectl CLI 工具刪除訂閱。

kn subscription delete <subscription-name>
kubectl subscription delete <subscription-name>

後續步驟

我們使用分析和 Cookie 來瞭解網站流量。為此,我們與 Google 分享您使用我們網站的資訊。瞭解更多。