Skip to content

Creating a RabbitMQ Broker

This topic describes how to create a RabbitMQ Broker.

Prerequisites

These directions assume your cluster administrator has installed the Knative RabbitMQ broker.

Create a RabbitMQBrokerConfig object

  1. 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 and connectionSecret at the same time, since name is for a RabbitMQ Cluster Operator instance running in the same cluster as the Broker, and connectionSecret is for an external RabbitMQ server.

  2. 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

  1. 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.

  2. 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

We use analytics and cookies to understand site traffic. Information about your use of our site is shared with Google for that purpose. Learn more.

× OK