订阅¶
创建 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
前缀。
-
使用以下示例为订阅对象创建一个 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>
-
通过运行以下命令应用 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>
删除订阅¶
您可以使用 kn
或 kubectl
CLI 工具删除订阅。
kn subscription delete <subscription-name>
kubectl subscription delete <subscription-name>