基於 Channel 的 Broker¶
基於 Channel 的 Broker (MTChannelBasedBroker
) 使用 Channels 進行事件路由。它預設隨附於 Knative Eventing。使用者應該優先選擇原生的 Broker 實作 (例如 適用於 Apache Kafka 的 Knative Broker 或 RabbitMQ Broker) 而不是 MTChannelBasedBroker 和 Channel 的組合,因為它們通常效率更高,例如可以減少網路跳躍。
先決條件¶
- 您已安裝 Knative Eventing。
- 您已安裝 Channel 實作。
由於 MTChannelBasedBroker 是基於 Channels,因此您需要安裝 Channel 實作。請查看 可用的 Channels,以取得 Knative Eventing 可用 Channel 的 (非詳盡) 清單。
例如,您可以執行以下命令來安裝 InMemory Channel
kubectl apply -f https://github.com/knative/eventing/releases/download/knative-v1.16.0/in-memory-channel.yaml
建立 MTChannelBasedBroker¶
您可以使用 kn
CLI 或使用 kubectl
應用 YAML 檔案來建立 MTChannelBasedBroker。
您可以輸入以下命令來建立 MTChannelBasedBroker
kn broker create <broker-name> --class MTChannelBasedBroker
<broker-name>
是您的 Broker 名稱。
以下範例中的 YAML 會建立 Broker。
-
使用以下範本建立 YAML 檔案來建立 MTChannelBasedBroker
其中apiVersion: eventing.knative.dev/v1 kind: Broker metadata: annotations: eventing.knative.dev/broker.class: MTChannelBasedBroker name: <broker-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 的底層 Channel 實作,以及一些 Channel 特定設定。例如
apiVersion: v1
kind: ConfigMap
metadata:
name: my-broker-specific-configuration
namespace: default
data:
channel-template-spec: |
apiVersion: messaging.knative.dev/v1
kind: InMemoryChannel
Kafka Channel 設定範例
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 開發人員文件。