基于通道的 Broker¶
基于通道的 Broker (MTChannelBasedBroker) 使用通道进行事件路由。它随 Knative Eventing 默认提供。用户应优先选择原生 Broker 实现(如Knative Broker for Apache Kafka或RabbitMQ Broker),而非 MTChannelBasedBroker 和通道的组合,因为它通常更高效,例如可以减少网络跳数。
先决条件¶
- 您已安装 Knative Eventing。
- 您已安装通道实现。
由于 MTChannelBasedBroker 基于通道,您需要安装一个通道实现。请查看可用通道,获取 Knative Eventing 可用通道的(非详尽)列表。
例如,您可以运行以下命令安装 InMemory 通道
kubectl apply -f https://github.com/knative/eventing/releases/download/knative-v1.20.0/in-memory-channel.yaml
创建一个 MTChannelBasedBroker¶
您可以使用 kn CLI 或通过使用 kubectl 应用 YAML 文件来创建 MTChannelBasedBroker。
您可以通过输入以下命令来创建 MTChannelBasedBroker
kn broker create <broker-name> --class MTChannelBasedBroker
是您的 Broker 的名称。
以下示例中的 YAML 创建了一个 Broker。
-
通过使用以下模板创建 YAML 文件来创建 MTChannelBasedBroker
其中apiVersion: eventing.knative.dev/v1 kind: Broker metadata: annotations: eventing.knative.dev/broker.class: MTChannelBasedBroker name: <broker-name>是您的 Broker 的名称。注意
请注意,Broker 类是通过
eventing.knative.dev/broker.class注解指定的。 -
应用 YAML 文件
其中kubectl apply -f <filename>.yaml<filename>是您在上一步中创建的文件的名称。
配置¶
您可以配置 Broker 对象本身,或者可以定义集群或命名空间默认值。
Broker 特定配置¶
可以通过在 spec.config 中引用 ConfigMap 来单独配置每个 Broker
apiVersion: eventing.knative.dev/v1
kind: Broker
metadata:
annotations:
eventing.knative.dev/broker.class: MTChannelBasedBroker
name: default
spec:
# Configuration specific to this broker.
config:
apiVersion: v1
kind: ConfigMap
name: my-broker-specific-configuration
namespace: default
引用的 ConfigMap 必须包含一个 channel-template-spec,它定义了此 Broker 的底层通道实现,以及一些通道特定配置。例如
apiVersion: v1
kind: ConfigMap
metadata:
name: my-broker-specific-configuration
namespace: default
data:
channel-template-spec: |
apiVersion: messaging.knative.dev/v1
kind: InMemoryChannel
Kafka 通道配置示例
apiVersion: v1
kind: ConfigMap
metadata:
name: kafka-channel
namespace: knative-eventing
data:
channel-template-spec: |
apiVersion: messaging.knative.dev/v1beta1
kind: KafkaChannel
spec:
numPartitions: 3
replicationFactor: 1
Broker 默认配置¶
config-br-defaults ConfigMap 定义了任何未指定 spec.config 或 Broker 类的 Broker 的默认值。可以在集群范围或按命名空间定义这些默认值。请查看管理员配置选项,了解如何在集群范围或按命名空间设置 Broker 默认值。
开发者文档¶
有关 MTChannelBasedBroker 的更多信息,请参阅MTChannelBasedBroker 开发者文档。