Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Use the RabbitMQ output binding to send messages to a RabbitMQ queue.
Note
The RabbitMQ bindings are only fully supported on Elastic Premium and Dedicated (App Service) plans. Flex Consumption and Consumption plans aren't yet supported.
RabbitMQ bindings aren't supported by the Azure Functions v1.x runtime.
For information on setup and configuration details, see the overview.
Example
You can create a C# function by using one of the following C# modes:
- Isolated worker model: Compiled C# function that runs in a worker process that's isolated from the runtime. An isolated worker process is required to support C# functions running on long-term support (LTS) and non-LTS versions for .NET and the .NET Framework.
- In-process model: Compiled C# function that runs in the same process as the Azure Functions runtime.
- C# script: Used primarily when you create C# functions in the Azure portal.
Important
Support will end for the in-process model on November 10, 2026. We highly recommend that you migrate your apps to the isolated worker model for full support.
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
FunctionContext context)
{
var logger = context.GetLogger(nameof(RabbitMQFunction));
logger.LogInformation(item);
var message = $"Output message created at {DateTime.Now}";
return message;
}
The following Java function uses the @RabbitMQOutput
annotation from the Java RabbitMQ types to describe the configuration for a RabbitMQ queue output binding. The function sends a message to the RabbitMQ queue when triggered by a TimerTrigger every 5 minutes.
@FunctionName("RabbitMQOutputExample")
public void run(
@TimerTrigger(name = "keepAliveTrigger", schedule = "0 */5 * * * *") String timerInfo,
@RabbitMQOutput(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "hello") OutputBinding<String> output,
final ExecutionContext context) {
output.setValue("Some string");
}
The following example shows a RabbitMQ output binding in a function.json file and a JavaScript function that uses the binding. The function reads in the message from an HTTP trigger and outputs it to the RabbitMQ queue.
Here's the binding data in the function.json file:
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"authLevel": "function",
"name": "input",
"methods": [
"get",
"post"
]
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
Here's JavaScript code:
module.exports = async function (context, input) {
context.bindings.outputMessage = input.body;
};
The following example shows a RabbitMQ output binding in a function.json file and a Python function that uses the binding. The function reads in the message from an HTTP trigger and outputs it to the RabbitMQ queue.
Here's the binding data in the function.json file:
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
In _init_.py:
import azure.functions as func
def main(req: func.HttpRequest, outputMessage: func.Out[str]) -> func.HttpResponse:
input_msg = req.params.get('message')
outputMessage.set(input_msg)
return 'OK'
Attributes
Both isolated worker process and in-process C# libraries use an attribute to define an output binding that writes to a RabbitMQ queue.
The RabbitMQOutputAttribute
constructor accepts these parameters:
Parameter | Description |
---|---|
QueueName | Name of the queue from which to receive messages. |
HostName | This parameter is no longer supported and is ignored. It will be removed in a future version. |
ConnectionStringSetting | The name of the app setting that contains the connection string for your RabbitMQ server. This setting only takes an app setting key name, you can't directly set a connection string value. For more information, see Connections. |
UserNameSetting | This parameter is no longer supported and is ignored. It will be removed in a future version. |
PasswordSetting | This parameter is no longer supported and is ignored. It will be removed in a future version. |
Port | Gets or sets the port used. Defaults to 0, which points to the RabbitMQ client's default port setting of 5672 . |
DisableCertificateValidation | Gets or sets a value indicating whether certificate validation should be disabled. Not recommended for production. Does not apply when SSL is disabled. |
Annotations
The RabbitMQOutput
annotation allows you to create a function that runs when a RabbitMQ message is created.
The annotation supports the following configuration settings:
Setting | Description |
---|---|
queueName | Name of the queue from which to receive messages. |
connectionStringSetting | The name of the app setting that contains the connection string for your RabbitMQ server. This setting only takes an app setting key name, you can't directly set a connection string value. For more information, see Connections. |
disableCertificateValidation | Gets or sets a value indicating whether certificate validation should be disabled. Not recommended for production. Does not apply when SSL is disabled. |
Configuration
The following table explains the binding configuration properties that you set in the function.json file.
function.json property | Description |
---|---|
type | Must be set to RabbitMQ . |
direction | Must be set to out . |
name | The name of the variable that represents the queue in function code. |
queueName | Name of the queue to send messages to. |
connectionStringSetting | The name of the app setting that contains the connection string for your RabbitMQ server. This setting only takes an app setting key name, you can't directly set a connection string value. For more information, see Connections. |
disableCertificateValidation | Gets or sets a value indicating whether certificate validation should be disabled. Not recommended for production. Does not apply when SSL is disabled. |
When you're developing locally, add your application settings in the local.settings.json file in the Values
collection.
See the Example section for complete examples.
Usage
The parameter type supported by the RabbitMQ trigger depends on the Functions runtime version, the extension package version, and the C# modality used.
The RabbitMQ bindings currently support only string and serializable object types when running in an isolated worker process.
Use the following parameter types for the output binding:
byte[]
- If the parameter value is null when the function exits, Functions doesn't create a message.string
- If the parameter value is null when the function exits, Functions doesn't create a message.POJO
- If the parameter value isn't formatted as a Java object, an error will be received.
The queue message is available via context.bindings.<NAME>
where <NAME>
matches the name defined in function.json. If the payload is JSON, the value is deserialized into an object.
Connections
Important
The RabbitMQ binding doesn't support Microsoft Entra authentication and managed identities. You can use Azure Key Vault to centrally managed your RabbitMQ connection strings. To learn more, see Manage Connections.
Starting with version 2.x of the extension, hostName
, userNameSetting
, and passwordSetting
are no longer supported to define a connection to the RabbitMQ server. You must instead use connectionStringSetting
.
The connectionStringSetting
property can only accept the name of a key-value pair in app settings. You can't directly set a connection string value in the binding.
For example, when you have set connectionStringSetting
to rabbitMQConnection
in your binding definition, your function app must have an app setting named rabbitMQConnection
that returns either a connection value like amqp://myuser:***@contoso.rabbitmq.example.com:5672
or an Azure Key Vault reference.
When running locally, you must also have the key value for connectionStringSetting
defined in your local.settings.json file. Otherwise, your app can't connect to the service from your local computer and an error occurs.