Creating a RabbitMQ Broker
This topic describes how to create a RabbitMQ Broker.
Prerequisites
- You have installed Knative Eventing.
- You have installed CertManager v1.5.4 - easiest integration with RabbitMQ Messaging Topology Operator
- You have installed RabbitMQ Messaging Topology Operator - our recommendation is latest release with CertManager
- You have access to a working RabbitMQ instance. You can create a RabbitMQ instance by using the RabbitMQ Cluster Kubernetes Operator. For more information see the RabbitMQ website.
Install the RabbitMQ controller
Install the RabbitMQ controller by running the command:
kubectl apply -f https://github.com/knative-extensions/eventing-rabbitmq/releases/download/knative-v1.16.0/rabbitmq-broker.yaml
Verify that
rabbitmq-broker-controller
andrabbitmq-broker-webhook
are running:kubectl get deployments.apps -n knative-eventing
Example output:
NAME READY UP-TO-DATE AVAILABLE AGE
eventing-controller 1/1 1 1 10s
eventing-webhook 1/1 1 1 9s
rabbitmq-broker-controller 1/1 1 1 3s
rabbitmq-broker-webhook 1/1 1 1 4s
Create a RabbitMQBrokerConfig object
Create a YAML file using the following template:
apiVersion: eventing.knative.dev/v1alpha1
kind: RabbitmqBrokerConfig
metadata:
name: <rabbitmq-broker-config-name>
spec:
rabbitmqClusterReference:
# Configure name if a RabbitMQ Cluster Operator is being used.
name: <cluster-name>
# Configure connectionSecret if an external RabbitMQ cluster is being used.
connectionSecret:
name: rabbitmq-secret-credentials
queueType: quorum
Where:
- is the name you want for your RabbitMQBrokerConfig object.
- is the name of the RabbitMQ cluster you created earlier.
Note
You cannot set
name
andconnectionSecret
at the same time, sincename
is for a RabbitMQ Cluster Operator instance running in the same cluster as the Broker, andconnectionSecret
is for an external RabbitMQ server.Apply the YAML file by running the command:
kubectl create -f <filename>
Where
<filename>
is the name of the file you created in the previous step.
Create a RabbitMQBroker object
Create a YAML file using the following template:
apiVersion: eventing.knative.dev/v1
kind: Broker
metadata:
annotations:
eventing.knative.dev/broker.class: RabbitMQBroker
name: <broker-name>
spec:
config:
apiVersion: eventing.knative.dev/v1alpha1
kind: RabbitmqBrokerConfig
name: <rabbitmq-broker-config-name>
Where
<rabbitmq-broker-config-name>
is the name you gave your RabbitMQBrokerConfig in the step above.Apply the YAML file by running the command:
kubectl apply -f <filename>
Where
<filename>
is the name of the file you created in the previous step.
Configure message ordering
By default, Triggers will consume messages one at a time to preserve ordering. If ordering of events isn’t important and higher performance is desired, you can configure this by using the parallelism
annotation. Setting parallelism
to n
creates n
workers for the Trigger that will all consume messages in parallel.
The following YAML shows an example of a Trigger with parallelism set to 10
:
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
name: high-throughput-trigger
annotations:
rabbitmq.eventing.knative.dev/parallelism: "10"
...
Additional information
- For more samples visit the eventing-rabbitmq Github repository samples directory
- To report a bug or request a feature, open an issue in the eventing-rabbitmq Github repository.