通道類型和預設值¶
Knative 使用兩種通道類型
- 一個通用的通道物件。
- 每個都有自己的自訂資源定義 (CRD) 的通道實作,例如 InMemoryChannel 和 KafkaChannel。 KafkaChannel 支援排序的消費者傳遞保證,這是一個每個分割區的封鎖消費者,它會等待 CloudEvent 訂閱者成功回應,然後才會傳遞分割區的下一則訊息。
自訂通道實作各自有自己的事件傳遞機制,例如記憶體內或基於 Broker。 Broker 的範例包括 KafkaBroker 和 GCP Pub/Sub Broker。
Knative 預設提供 InMemoryChannel 通道實作。此預設實作對於不想設定特定實作類型(例如 Apache Kafka 或 NATSS 通道)的開發人員很有用。
如果您想建立通道而不指定使用哪個通道實作 CRD,則可以使用通用通道物件。如果您不關心特定通道實作提供的屬性(例如排序和持久性),並且您想使用叢集管理員選擇的實作,這會很有用。
叢集管理員可以透過編輯 knative-eventing
命名空間中的 default-ch-webhook
ConfigMap 來修改預設通道實作設定。
如需有關修改 ConfigMap 的詳細資訊,請參閱設定 Eventing Operator 自訂資源。
可以為叢集、叢集上的命名空間或兩者設定預設通道。
注意
如果為命名空間設定了預設通道實作,這將會覆寫叢集的設定。
在下列範例中,叢集預設通道實作是 InMemoryChannel,而 example-namespace
的命名空間預設通道實作是 KafkaChannel。
apiVersion: v1
kind: ConfigMap
metadata:
name: default-ch-webhook
namespace: knative-eventing
data:
default-ch-config: |
clusterDefault:
apiVersion: messaging.knative.dev/v1
kind: InMemoryChannel
namespaceDefaults:
example-namespace:
apiVersion: messaging.knative.dev/v1beta1
kind: KafkaChannel
spec:
numPartitions: 2
replicationFactor: 1
注意
InMemoryChannel 通道不得在生產環境中使用。