RabbitMQ binding spec
Detailed documentation on the RabbitMQ binding component
Component format
To setup RabbitMQ binding create a component of type bindings.rabbitmq
. See this guide on how to create and apply a binding configuration.
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: <NAME>
namespace: <NAMESPACE>
spec:
type: bindings.rabbitmq
version: v1
metadata:
- name: queueName
value: queue1
- name: host
value: amqp://[username][:password]@host.domain[:port]
- name: durable
value: true
- name: deleteWhenUnused
value: false
- name: ttlInSeconds
value: 60
- name: prefetchCount
value: 0
- name: exclusive
value: false
- name: maxPriority
value: 5
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 | Binding support | Details | Example |
---|---|---|---|---|
queueName | Y | Input/Output | The RabbitMQ queue name | “myqueue” |
host | Y | Input/Output | The RabbitMQ host address | “amqp://[username][:password]@host.domain[:port]” |
durable | N | Output | Tells RabbitMQ to persist message in storage. Defaults to “false” | “true” , “false” |
deleteWhenUnused | N | Input/Output | Enables or disables auto-delete. Defaults to “false” | “true” , “false” |
ttlInSeconds | N | Output | Set the default message time to live at RabbitMQ queue level. If this parameter is omitted, messages won’t expire, continuing to exist on the queue until processed. See also | 60 |
prefetchCount | N | Input | Set the Channel Prefetch Setting (QoS). If this parameter is omiited, QoS would set value to 0 as no limit | 0 |
exclusive | N | Input/Output | Determines whether the topic will be an exclusive topic or not. Defaults to “false” | “true” , “false” |
maxPriority | N | Input/Output | Parameter to set the priority queue. If this parameter is omitted, queue will be created as a general queue instead of a priority queue. Value between 1 and 255. See also | “1” , “10” |
Binding support
This component supports both input and output binding interfaces.
This component supports output binding with the following operations:
create
Specifying a TTL per message
Time to live can be defined on queue level (as illustrated above) or at the message level. The value defined at message level overwrites any value set at queue level.
To set time to live at message level use the metadata
section in the request body during the binding invocation.
The field name is ttlInSeconds
.
Example:
curl -X POST http://localhost:3500/v1.0/bindings/myRabbitMQ \
-H "Content-Type: application/json" \
-d "{
\"data\": {
\"message\": \"Hi\"
},
\"metadata\": {
\"ttlInSeconds\": "60"
},
\"operation\": \"create\"
}"
curl -X POST http://localhost:3500/v1.0/bindings/myRabbitMQ \
-H "Content-Type: application/json" \
-d '{
"data": {
"message": "Hi"
},
"metadata": {
"ttlInSeconds": "60"
},
"operation": "create"
}'
Specifying a priority per message
Priority can be defined at the message level. If maxPriority
parameter is set, high priority messages will have priority over other low priority messages.
To set priority at message level use the metadata
section in the request body during the binding invocation.
The field name is priority
.
Example:
curl -X POST http://localhost:3500/v1.0/bindings/myRabbitMQ \
-H "Content-Type: application/json" \
-d "{
\"data\": {
\"message\": \"Hi\"
},
\"metadata\": {
"priority": \"5\"
},
\"operation\": \"create\"
}"
curl -X POST http://localhost:3500/v1.0/bindings/myRabbitMQ \
-H "Content-Type: application/json" \
-d '{
"data": {
"message": "Hi"
},
"metadata": {
"priority": "5"
},
"operation": "create"
}'
Related links
- Basic schema for a Dapr component
- Bindings building block
- How-To: Trigger application with input binding
- How-To: Use bindings to interface with external resources
- Bindings API reference
Last modified March 18, 2021: Merge pull request #1321 from dapr/aacrawfi/logos (9a399d5)