RabbitMQ message broker
Categories:
Overview
The rabbitmq.com/MessageQueue
resource offers a RabbitMQ message broker.
Resource format
resource rabbitmq 'Applications.Messaging/rabbitmqQueues@2023-10-01-preview' = {
name: 'rabbitmq'
properties: {
environment: environment
application: app.id
recipe: {
// Name a specific Recipe to use
name: 'rabbit'
// Optionally set recipe parameters if needed (specific to the Recipe)
parameters: {
queue: '*****'
}
}
}
}
param rmqUsername string
@secure()
param rmqPassword string
param rmqHost string
param rmqPort int
param vHost string
resource rabbitmq 'Applications.Messaging/rabbitmqQueues@2023-10-01-preview' = {
name: 'rabbitmq'
properties: {
environment: environment
application: app.id
resourceProvisioning: 'manual'
queue: 'radius-queue'
host: rmqHost
port: rmqPort
vHost: vHost
username: rmqUsername
secrets: {
password: rmqPassword
}
}
}
Top-level
Key | Required | Description | Example |
---|---|---|---|
name | y | The name of your resource. | mongo |
location | y | The location of your resource. See common values for more information. | global |
properties | y | Properties of the resource. | See below |
Properties
Key | Required | Description | Example |
---|---|---|---|
application | n | The ID of the application resource this resource belongs to. | app.id |
environment | y | The ID of the environment resource this resource belongs to. | env.id |
resourceProvisioning | n | Specifies how the underlying service/resource is provisioned and managed. Options are to provision automatically via ‘recipe’ or provision manually via ‘manual’. Selection determines which set of fields to additionally require. Defaults to ‘recipe’. | manual |
host | n | The hostname of the RabbitMQ instance. | rabbitmq.hello.com |
port | n | The port of the RabbitMQ instance. Defaults to 5672. | 5672 |
vHost | n | The RabbitMQ virtual host (vHost) the client will connect to. Defaults to no vHost. | vHost |
tls | n | Specifies whether to use SSL when connecting to the RabbitMQ instance. | tls |
username | n | Username to use when connecting to the target rabbitMQ. | 'myusername' |
recipe | n | Configuration for the Recipe which will deploy the backing infrastructure. | See below |
resources | n | An array of IDs of the underlying resources. | See below |
queue | y | The name of the queue. | 'orders' |
secrets | y | Configuration used to manually specify a RabbitMQ container or other service providing a RabbitMQ Queue. | See secrets below. |
Recipe
Property | Required | Description | Example(s) |
---|---|---|---|
name | n | Specifies the name of the Recipe that should be deployed. If not set, the name defaults to default . |
name: 'azure-prod' |
parameters | n | An object that contains a list of parameters to set on the Recipe. | { port: '10040' } |
Resources
Property | Required | Description | Example(s) |
---|---|---|---|
id | n | Resource ID of the supporting resource. | queue.id |
Secrets
Secrets are used when defining a RabbitMQ resource with a container or external service.
Property | Description | Example |
---|---|---|
uri | The URI to the Rabbit MQ Message Queue. Write only | 'amqp://${username}:${password}@${rmqContainer.properties.hostname}:${rmqContainer.properties.port}' |
password | The password used to connect to this RabbitMQ. Write only. | 'mypassword' |
Methods
Property | Description | Example |
---|---|---|
listSecrets() | Get the secrets for the RabbitMQ. | listSecrets().uri |
Resource provisioning
Provision with a Recipe
Recipes automate infrastructure provisioning using approved templates. When no Recipe configuration is set Radius will use the Recipe registered as the default in the environment for the given resource. Otherwise, a Recipe name and parameters can optionally be set.
Provision manually
If you want to manually manage your infrastructure provisioning outside of Recipes, you can set resourceProvisioning
to 'manual'
and provide all necessary parameters and values and values that enable Radius to deploy or connect to the desired infrastructure.
Environment variables for connections
Other Radius resources, such as containers, may connect to a RabbitMQ resource via connections. When a connection to RabbitMQ named, for example, myconnection
is declared, Radius injects values into environment variables that are then used to access the connected RabbitMQ resource:
Environment variable | Example(s) |
---|---|
CONNECTION_MYCONNECTION_QUEUE | 'orders' |
CONNECTION_MYCONNECTION_HOST | 'rabbitmq.svc.local.cluster' |
CONNECTION_MYCONNECTION_PORT | '5672' |
CONNECTION_MYCONNECTION_VHOST | 'qa1' |
CONNECTION_MYCONNECTION_USERNAME | 'guest' |
CONNECTION_MYCONNECTION_TLS | 'true' |
CONNECTION_MYCONNECTION_URI | 'amqp://${username}:${password}@${rmqContainer.properties.hostname}:${rmqContainer.properties.port}' |
CONNECTION_MYCONNECTION_PASSWORD | 'password' |
Feedback
Was this page helpful?
Glad to hear it! Please feel free to star our repo and join our Discord server to stay up to date with the project.
Sorry to hear that. If you would like to also contribute a suggestion visit and tell us how we can improve.