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:
Where: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
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:
Wherekubectl create -f <filename>
<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:
WhereapiVersion: 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>
<rabbitmq-broker-config-name>
is the name you gave your RabbitMQBrokerConfig in the step above. -
Apply the YAML file by running the command:
Wherekubectl apply -f <filename>
<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.