RabbitMQ
Detailed documentation on the RabbitMQ pubsub component
Component format
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: rabbitmq-pubsub
namespace: default
spec:
type: pubsub.rabbitmq
version: v1
metadata:
- name: host
value: "amqp://localhost:5672"
- name: durable
value: "false"
- name: deletedWhenUnused
value: "false"
- name: autoAck
value: "false"
- name: deliveryMode
value: "0"
- name: requeueInFailure
value: "false"
- name: prefetchCount
value: "0"
- name: reconnectWait
value: "0"
- name: concurrencyMode
value: parallel
Warning
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described here.
Spec metadata fields
Field | Required | Details | Example |
---|---|---|---|
host | Y | Connection-string for the rabbitmq host | amqp://user:pass@localhost:5672 |
durable | N | Whether or not to use durable queues. Defaults to “false” | “true” , “false” |
deletedWhenUnused | N | Whether or not the queue sohuld be configured to auto-delete Defaults to “false” | “true” , “false” |
autoAck | N | Whether or not the queue consumer should auto-ack messages. Defaults to “false” | “true” , “false” |
deliveryMode | N | Persistence mode when publishing messages. Defaults to “0” . RabbitMQ treats “2” as persistent, all other numbers as non-persistent | “0” , “2” |
requeueInFailure | N | Whether or not to requeue when sending a negative acknolwedgement in case of a failure. Defaults to “false” | “true” , “false” |
prefetchCount | N | Number of messages to prefecth. Consider changing this to a non-zero value for production environments. Defaults to “0” , which means that all available messages will be pre-fetched. | “2” |
reconnectWait | N | How long to wait (in seconds) before reconnecting if a connection failure occurs | “0” |
concurrencyMode | N | parallel is the default, and allows processing multiple messages in parallel (limited by the app-max-concurrency annotation, if configured). Set to single to disable parallel processing. In most situations there’s no reason to change this. | parallel , single |
Create a RabbitMQ server
You can run a RabbitMQ server locally using Docker:
docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3
You can then interact with the server using the client port: localhost:5672
.
The easiest way to install RabbitMQ on Kubernetes is by using the Helm chart:
helm install rabbitmq stable/rabbitmq
Look at the chart output and get the username and password.
This will install RabbitMQ into the default
namespace. To interact with RabbitMQ, find the service with: kubectl get svc rabbitmq
.
For example, if installing using the example above, the RabbitMQ server client address would be:
rabbitmq.default.svc.cluster.local:5672
Related links
- Basic schema for a Dapr component in the Related links section
- Read this guide for instructions on configuring pub/sub components
- Pub/Sub building block
Last modified March 18, 2021: Merge pull request #1321 from dapr/aacrawfi/logos (9a399d5)