6.3. 将频道连接到 sink
来自事件源或制作者发送到频道的事件可使用 订阅 转发到一个或多个 sink。您可以通过配置 Subscription
对象来创建订阅,它指定消耗发送到该频道的事件的频道和接收器(也称为 订阅者)。
6.3.1. 使用 Developer 视角创建订阅 复制链接链接已复制到粘贴板!
创建频道和事件 sink 后,您可以创建一个订阅来启用事件交付。使用 OpenShift Container Platform Web 控制台提供了一个简化且直观的用户界面来创建订阅。
先决条件
- OpenShift Serverless Operator、Knative Serving 和 Knative Eventing 已在 OpenShift Container Platform 集群中安装。
- 已登陆到 web 控制台。
- 您已创建了事件 sink,如 Knative 服务以及频道。
- 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
- 在 Developer 视角中,进入 Topology 页。
使用以下方法之一创建订阅:
将鼠标悬停在您要为其创建订阅的频道上,并拖动箭头。此时会显示 Add Subscription 选项。
- 在 Subscriber 列表中选择您的接收器。
- 点 Add。
- 如果服务在与频道相同的命名空间或项目下的 Topology 视图中可用,点击您要为该频道创建订阅的频道,并将箭头直接拖到服务以立即从频道创建订阅到该服务。
验证
创建订阅后,您可以在 Topology 视图中将频道连接到该服务的行显示为:
6.3.2. 使用 YAML 创建订阅 复制链接链接已复制到粘贴板!
创建频道和事件 sink 后,您可以创建一个订阅来启用事件交付。使用 YAML 文件创建 Knative 资源使用声明性 API,它允许您以声明性的方式描述订阅,并以可重复的方式描述订阅。要使用 YAML 创建订阅,您必须创建一个 YAML 文件来定义 Subscription
对象,然后使用 oc apply
命令应用它。
先决条件
- 在集群中安装了 OpenShift Serverless Operator 和 Knative Eventing。
-
安装 OpenShift CLI (
oc
) 。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
创建
Subscription
对象:创建 YAML 文件并将以下示例代码复制到其中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 订阅的名称。
- 2
- 订阅连接的频道的配置设置。
- 3
- 事件交付的配置设置。这会告诉订阅无法发送给订阅者的事件。配置后,消耗的事件会发送到
deadLetterSink
。事件将被丢弃,不会尝试重新发送该事件,并在系统中记录错误。deadLetterSink
的值需要是一个 Destination。 - 4
- 订阅用户的配置设置。这是事件从频道发送的事件 sink。
应用 YAML 文件:
oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3.3. 使用 Knative CLI 创建订阅 复制链接链接已复制到粘贴板!
创建频道和事件 sink 后,您可以创建一个订阅来启用事件交付。使用 Knative (kn
) CLI 创建订阅提供了比直接修改 YAML 文件更精简且直观的用户界面。您可以使用带有适当标志的 kn subscription create
命令创建订阅。
先决条件
- OpenShift Serverless Operator 和 Knative Eventing 已安装在 OpenShift Container Platform 集群中。
-
已安装 Knative (
kn
) CLI。 - 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
流程
创建订阅以将接收器连接到频道:
kn subscription create <subscription_name> \ --channel <group:version:kind>:<channel_name> \ --sink <sink_prefix>:<sink_name> \ --sink-dead-letter <sink_prefix>:<sink_name>
$ kn subscription create <subscription_name> \ --channel <group:version:kind>:<channel_name> \
1 --sink <sink_prefix>:<sink_name> \
2 --sink-dead-letter <sink_prefix>:<sink_name>
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
--channel
指定应处理的云事件的来源。您必须提供频道名称。如果您没有使用由Channel
自定义资源支持的默认InMemoryChannel
频道,您必须为指定频道类型添加<group:version:kind>
前缀。例如,这是 Apache Kafka 支持的频道的messaging.knative.dev:v1beta1:KafkaChannel
。- 2
--sink
指定事件要传送到的目标目的地。默认情况下,<sink_name>
解释为此名称的 Knative 服务,与订阅位于同一个命名空间中。您可以使用以下前缀之一指定接收器类型:ksvc
- Knative 服务。
channel
- 作为目的地的频道。这里只能引用默认频道类型。
broker
- Eventing 代理。
- 3
- 可选:
--sink-dead-letter
是一个可选标志,可用于指定在无法发送事件时哪些事件应发送到的接收器。如需更多信息,请参阅 OpenShift Serverless 事件交付文档。示例命令
kn subscription create mysubscription --channel mychannel --sink ksvc:event-display
$ kn subscription create mysubscription --channel mychannel --sink ksvc:event-display
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Subscription 'mysubscription' created in namespace 'default'.
Subscription 'mysubscription' created in namespace 'default'.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要确认频道已连接到事件接收器或 subscriber,使用一个订阅列出现有订阅并检查输出:
kn subscription list
$ kn subscription list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME CHANNEL SUBSCRIBER REPLY DEAD LETTER SINK READY REASON mysubscription Channel:mychannel ksvc:event-display True
NAME CHANNEL SUBSCRIBER REPLY DEAD LETTER SINK READY REASON mysubscription Channel:mychannel ksvc:event-display True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
删除订阅
删除订阅:
kn subscription delete <subscription_name>
$ kn subscription delete <subscription_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3.4. 使用 Administrator 视角创建订阅 复制链接链接已复制到粘贴板!
创建频道和事件 sink(也称为 订阅者 )后,您可以创建一个订阅来启用事件交付。订阅是通过配置 Subscription
对象创建的,它指定了要向其发送事件的频道和订阅者。您还可以指定一些特定于订阅者的选项,比如如何处理失败。
先决条件
- OpenShift Serverless Operator 和 Knative Eventing 已安装在 OpenShift Container Platform 集群中。
- 您已登录到 Web 控制台,且处于 Administrator 视角。
- 在 OpenShift Container Platform 上具有集群管理员权限,或者对 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 有集群或专用管理员权限。
- 您已创建了 Knative 频道。
- 您已创建了 Knative 服务以用作订阅者。
流程
-
在 OpenShift Container Platform Web 控制台的 Administrator 视角中,导航到 Serverless
Eventing。 -
在 Channel 选项卡中,选择您要在其中添加订阅的频道的 Options 菜单
。
- 点击列表中的 Add Subscription。
- 在 Add Subscription 对话框中,为订阅选择 Subscriber。订阅者是可以从频道接收事件的 Knative 服务。
- 点 Add。
6.3.5. 后续步骤 复制链接链接已复制到粘贴板!
- 配置事件交付参数,当事件无法发送到事件 sink 时。