跳至内容

订阅

创建 Channel 和 Sink 后,您可以创建订阅以启用事件传递。

订阅包括一个订阅对象,该对象指定要将事件传递到的 Channel 和 Sink(也称为订阅者)。您还可以指定一些特定于 Sink 的选项,例如如何处理错误。

有关订阅对象的更多信息,请参阅 订阅

创建订阅

通过运行以下命令在 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 名称之前添加 <Group:Version:Kind>,用于指定 Channel 类型。例如,对于基于 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. 使用以下示例为订阅对象创建一个 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 共享,以用于该目的。 了解更多。