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.17.0/rabbitmq-broker.yaml -
Verify that
rabbitmq-broker-controllerandrabbitmq-broker-webhookare running:kubectl get deployments.apps -n knative-eventingExample 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: quorumis the name you want for your RabbitMQBrokerConfig object. is the name of the RabbitMQ cluster you created earlier.
Note
You cannot set
nameandconnectionSecretat the same time, sincenameis for a RabbitMQ Cluster Operator instance running in the same cluster as the Broker, andconnectionSecretis 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-rabbitmqGithub repository samples directory - To report a bug or request a feature, open an issue in the
eventing-rabbitmqGithub repository.