RabbitMQ
Type: pubsub.rabbitmq
Status: stable
Reference: https://docs.dapr.io/reference/components-reference/supported-pubsub/setup-rabbitmq/
Example
apiVersion: cra.diagrid.io/v1beta1
kind: Component
metadata:
name: <name>
spec:
type: pubsub.rabbitmq
version: v1
metadata:
# The RabbitMQ host address.
- name: connectionString
value: "amqp://[username][:password]@host.domain[:port] amqps://[username][:password]@host.domain[:port]"
# Whether or not the queue consumer should auto-ack messages. (Optional)
#- name: autoAck
# value: "false"
# The client/connection name. (Optional)
#- name: clientName
# value: "my_client_name"
# 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. (Optional)
#- name: concurrency
# value: "parallel"
# Set the consumer ID to control namespacing. Defaults to the app's ID. (Optional)
#- name: consumerID
# value: "{namespace}"
# Whether or not the queue should be configured to auto-delete. (Optional)
#- name: deletedWhenUnused
# value: "true"
# Persistence mode when publishing messages. RabbitMQ treats "2" as persistent, all other numbers as non-persistent. (Optional)
#- name: deliveryMode
# value: "0"
# Whether or not to use durable queues. (Optional)
#- name: durable
# value: "false"
# Enable forwarding messages that cannot be handled to a dead-letter topic. (Optional)
#- name: enableDeadLetter
# value: "false"
# Exchange kind of the rabbitmq exchange. (Optional)
#- name: exchangeKind
# value: "fanout"
# The heartbeat used for the connection. (Optional)
#- name: heartBeat
# value: "10s"
# The maximum number of messages of a queue and its dead letter queue (if dead letter enabled by `enableDeadLetter`). If both `maxLen` and `maxLenBytes` are set then both will apply; whichever limit is hit first will be enforced. (Optional)
#- name: maxLen
# value: "1000"
# Maximum length in bytes of a queue and its dead letter queue (if dead letter enabled by `enableDeadLetter`). If both `maxLen` and `maxLenBytes` are set then both will apply; whichever limit is hit first will be enforced. (Optional)
#- name: maxLenBytes
# value: "1048576"
# Number of messages to prefetch. Consider changing this to a non-zero value for production environments. The value of "0" means that all available messages will be pre-fetched. (Optional)
#- name: prefetchCount
# value: "0"
# Whether to publish AMQP message properties (headers, message ID, etc.) to the metadata. (Optional)
#- name: publishMessagePropertiesToMetadata
# value: "false"
# If enabled, client waits for publisher confirmation after publishing a message. (Optional)
#- name: publisherConfirm
# value: "false"
# Reconnect wait in Seconds. (Optional)
#- name: reconnectWaitSeconds
# value: "3s"
# Whether or not to requeue when sending a negative acknowledgement in case of a failure. (Optional)
#- name: requeueInFailure
# value: "false"
# Default Queue TTL. (Optional)
#- name: ttlInSeconds
# value: "10"
Authentication profiles
Available authentication profiles:
-
Connection string
-
Authenticate Using RabbitMQ properties
-
Authenticate Using Connection string and External Sasl and TLS
Connection string
Authenticate using a connection string.
connectionString
Required - The RabbitMQ host address.
Example value: amqp://[username][:password]@host.domain[:port] amqps://[username][:password]@host.domain[:port]
Authenticate Using RabbitMQ properties
RabbitMQ authentication by providing hostname, username and password.
hostname (string)
The RabbitMQ hostname.
Example value: mycompany.com
password (string)
The RabbitMQ password.
Example value: password
protocol (string)
The RabbitMQ protocol.
Example value: amqp, amqps
username (string)
The RabbitMQ username.
Example value: username
Authenticate Using Connection string and External Sasl and TLS
Authenticate using a connection string along with Exteranl Sasl and TLS.
caCert (string)
Required - Certificate authority certificate, required for using TLS.
Example value:
-----BEGIN CERTIFICATE-----
<base64-encoded DER>
-----END CERTIFICATE-----
clientCert (string)
Required - Client certificate, Required for using TLS.
Example value:
-----BEGIN CERTIFICATE-----
<base64-encoded DER>
-----END CERTIFICATE-----
clientKey (string)
Required - Client key, required for using TLS.
Example value:
-----BEGIN RSA PRIVATE KEY-----
<base64-encoded DER>
-----END RSA PRIVATE KEY-----
connectionString
Required - The RabbitMQ host address.
Example value: amqp://[username][:password]@host.domain[:port] amqps://[username][:password]@host.domain[:port]
saslExternal (bool)
With TLS, should the username be taken from an additional field (e.g. CN.) See RabbitMQ Authentication Mechanisms.
Default value: false
Example value: true
RabbitMQ Authentication Mechanisms: https://www.rabbitmq.com/access-control.html#mechanisms
Metadata
autoAck (bool)
Whether or not the queue consumer should auto-ack messages.
Default value: false
Example value: true, false
clientName (string)
The client/connection name.
Example value: my_client_name
concurrency (string)
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.
Default value: parallel
Example value: parallel, single
Allowed values:
-
parallel
-
single
consumerID (string)
Set the consumer ID to control namespacing. Defaults to the app's ID.
Example value: {namespace}
Documentation: https://docs.dapr.io/developing-applications/building-blocks/pubsub/pubsub-overview/#consumer-groups-and-competing-consumers-pattern
deletedWhenUnused (bool)
Whether or not the queue should be configured to auto-delete.
Default value: true
Example value: true, false
deliveryMode (number)
Persistence mode when publishing messages. RabbitMQ treats "2" as persistent, all other numbers as non-persistent.
Default value: 0
Example value: 2
durable (bool)
Whether or not to use durable queues.
Default value: false
Example value: true, false
enableDeadLetter (bool)
Enable forwarding messages that cannot be handled to a dead-letter topic.
Default value: false
Example value: true, false
exchangeKind (string)
Exchange kind of the rabbitmq exchange.
Default value: fanout
Example value: fanout,topic
Allowed values:
-
fanout
-
topic
heartBeat (duration)
The heartbeat used for the connection.
Default value: 10s
Example value: 30s
maxLen (number)
The maximum number of messages of a queue and its dead letter queue (if dead letter enabled by enableDeadLetter). If both maxLen and maxLenBytes are set then both will apply; whichever limit is hit first will be enforced.
Example value: 1000
maxLenBytes (number)
Maximum length in bytes of a queue and its dead letter queue (if dead letter enabled by enableDeadLetter). If both maxLen and maxLenBytes are set then both will apply; whichever limit is hit first will be enforced.
Example value: 1048576
prefetchCount (number)
Number of messages to prefetch. Consider changing this to a non-zero value for production environments. The value of "0" means that all available messages will be pre-fetched.
Default value: 0
Example value: 2
publishMessagePropertiesToMetadata (bool)
Whether to publish AMQP message properties (headers, message ID, etc.) to the metadata.
Default value: false
Example value: true, false
publisherConfirm (bool)
If enabled, client waits for publisher confirmation after publishing a message.
Default value: false
Example value: true, false
reconnectWaitSeconds (duration)
Reconnect wait in Seconds.
Default value: 3s
Example value: 10s
requeueInFailure (bool)
Whether or not to requeue when sending a negative acknowledgement in case of a failure.
Default value: false
Example value: true, false
ttlInSeconds (duration)
Default Queue TTL.
Example value: 10