Channel based Broker
The Channel based Broker (MTChannelBasedBroker
) uses Channels for event routing. It is shipped by default with Knative Eventing. Users should prefer native Broker implementations (like Knative Broker for Apache Kafka or RabbitMQ Broker) over the MTChannelBasedBroker and Channel combination because it is usually more efficient as they reduce network hops for example.
Prerequisites
- You have Knative Eventing installed.
- You have a Channel implementation installed.
As the MTChannelBasedBroker is based on Channels, you need to install a Channel implementation. Check out the available Channels for a (non-exhaustive) list of the available Channels for Knative Eventing.
You can install for example the InMemory Channel by running the following command:
kubectl apply -f https://github.com/knative/eventing/releases/download/knative-v1.16.0/in-memory-channel.yaml
Create a MTChannelBasedBroker
You can create a MTChannelBasedBroker by using the kn
CLI or by applying YAML files using kubectl
.
knkubectl
You can create a MTChannelBasedBroker by entering the following command:
kn broker create <broker-name> --class MTChannelBasedBroker
Where <broker-name>
is the name of your Broker.
The YAML in the following example creates a Broker.
Create a MTChannelBasedBroker by creating a YAML file using the following template:
apiVersion: eventing.knative.dev/v1
kind: Broker
metadata:
annotations:
eventing.knative.dev/broker.class: MTChannelBasedBroker
name: <broker-name>
Where
<broker-name>
is the name of your Broker.Note
Note, that the Broker class is specified via the
eventing.knative.dev/broker.class
annotation.Apply the YAML file:
kubectl apply -f <filename>.yaml
Where
<filename>
is the name of the file you created in the previous step.
Configuration
You configure the Broker object itself, or you can define cluster or namespace default values.
Broker specific configuration
It is possible to configure each Broker individually by referencing a ConfigMap in the spec.config
:
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
The referenced ConfigMap must contain a channel-template-spec
that defines the underlining Channel implementation for this Broker, as well as some Channel specific configurations. For example:
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 configuration example:
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 default configuration
The config-br-defaults
ConfigMap defines default values for any Broker that does not specify a spec.config
or a Broker class. It is possible to define these defaults cluser wide or on a per namespace basis. Check the Administrator configuration options on how to set Broker defaults cluster wide or on a namespace basis.
Developer documentation
For more information about MTChannelBasedBroker
, see the MTChannelBasedBroker developer documentation.