Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Use el enlace de salida de RabbitMQ para enviar mensajes a una cola de RabbitMQ.
Nota:
Los enlaces rabbitMQ solo son totalmente compatibles con los planes Elastic Premium y Dedicado (App Service). Todavía no se admiten los planes de consumo y consumo flexible.
Los enlaces rabbitMQ no son compatibles con el entorno de ejecución de Azure Functions v1.x.
Para obtener información sobre los detalles de instalación y configuración, vea la información general.
Ejemplo
Puede crear una función de C# mediante uno de los siguientes modos de C#:
- Modelo de trabajo aislado: función compilada en C# que se ejecuta en un proceso trabajador aislado del tiempo de ejecución. Se requiere un proceso de trabajo aislado para admitir funciones de C# que se ejecutan en versiones de soporte técnico a largo plazo (LTS) y no LTS para .NET y .NET Framework.
- Modelo en proceso: función de C# compilada que se ejecuta en el mismo proceso que el tiempo de ejecución de Azure Functions.
- Script de C#: se usa principalmente al crear funciones de C# en Azure Portal.
Importante
El soporte técnico del modelo en proceso finalizará el 10 de noviembre de 2026. Se recomienda encarecidamente migrar las aplicaciones al modelo de trabajo aislado para obtener soporte técnico completo.
[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;
}
La siguiente función de Java usa la anotación @RabbitMQOutput de los @RabbitMQOutput para describir la configuración de un enlace de salida de la cola de RabbitMQ. La función envía un mensaje a la cola de RabbitMQ cuando se desencadena mediante TimerTrigger cada cinco minutos.
@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");
}
En el ejemplo siguiente se muestra un enlace de salida de RabbitMQ en un archivo function.json y una función de JavaScript que usa el enlace. La función lee el mensaje desde un desencadenador HTTP y lo envía a la cola de RabbitMQ.
Estos son los datos de enlace del archivo function.json:
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"authLevel": "function",
"name": "input",
"methods": [
"get",
"post"
]
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
Este es el código de JavaScript:
module.exports = async function (context, input) {
context.bindings.outputMessage = input.body;
};
En el ejemplo siguiente se muestra un enlace de entrada de RabbitMQ en un archivo function.json y una función de Python que usa el enlace. La función lee el mensaje desde un desencadenador HTTP y lo envía a la cola de RabbitMQ.
Estos son los datos de enlace del archivo function.json:
{
"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"
}
]
}
En _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'
Atributos
Tanto el proceso de trabajo aislado como las bibliotecas de C# en proceso usan un atributo para definir un enlace de salida que escribe en una cola rabbitMQ.
El RabbitMQOutputAttribute constructor acepta estos parámetros:
| Parámetro | Descripción |
|---|---|
| QueueName | Nombre de la cola desde la que se reciben los mensajes. |
| Nombre de host | Este parámetro ya no se admite y se omite. Se quitará en una versión futura. |
| ConnectionStringSetting | Nombre de la configuración de la aplicación que contiene la cadena de conexión del servidor RabbitMQ. Esta configuración solo toma un nombre de clave de configuración de la aplicación, no se puede establecer directamente un valor de cadena de conexión. Para obtener más información, consulte Conexiones. |
| UserNameSetting | Este parámetro ya no se admite y se omite. Se quitará en una versión futura. |
| Configuración de contraseña | Este parámetro ya no se admite y se omite. Se quitará en una versión futura. |
| Puerto | Obtiene o establece el puerto usado. El valor predeterminado es 0, que apunta a la configuración de puerto predeterminado del cliente de RabbitMQ de 5672. |
| DisableCertificateValidation | Obtiene o establece un valor que indica si se debe deshabilitar la validación del certificado. No se recomienda para producción. No se aplica cuando SSL está deshabilitado. |
anotaciones
La anotación RabbitMQOutput permite crear una función que se ejecuta al crear un mensaje de RabbitMQ.
La anotación admite las siguientes configuración:
| Configuración | Descripción |
|---|---|
| queueName | Nombre de la cola desde la que se reciben los mensajes. |
| connectionStringSetting | Nombre de la configuración de la aplicación que contiene la cadena de conexión del servidor RabbitMQ. Esta configuración solo toma un nombre de clave de configuración de la aplicación, no se puede establecer directamente un valor de cadena de conexión. Para obtener más información, consulte Conexiones. |
| disableCertificateValidation | Obtiene o establece un valor que indica si se debe deshabilitar la validación del certificado. No se recomienda para producción. No se aplica cuando SSL está deshabilitado. |
Configuración
En la siguiente tabla se explican las propiedades de configuración de enlace que se establecen en el archivo function.json.
| Propiedad de function.json | Descripción |
|---|---|
| tipo | Se debe establecer en RabbitMQ. |
| dirección | Se debe establecer en out. |
| nombre | Nombre de la variable que representa la cola en el código de la función. |
| queueName | Nombre de la cola a la que se van a enviar mensajes. |
| connectionStringSetting | Nombre de la configuración de la aplicación que contiene la cadena de conexión del servidor RabbitMQ. Esta configuración solo toma un nombre de clave de configuración de la aplicación, no se puede establecer directamente un valor de cadena de conexión. Para obtener más información, consulte Conexiones. |
| disableCertificateValidation | Obtiene o establece un valor que indica si se debe deshabilitar la validación del certificado. No se recomienda para producción. No se aplica cuando SSL está deshabilitado. |
Cuando esté desarrollando localmente, agregue la configuración de la aplicación en el archivo local.settings.json de la colección Values.
Consulte la sección de ejemplos para ver ejemplos completos.
Uso
El tipo de parámetro admitido por el desencadenador de RabbitMQ depende de la versión del tiempo de ejecución de Functions, la versión del paquete de extensión y la modalidad de C# utilizada.
Actualmente, los enlaces de RabbitMQ solo admiten tipos de objeto serializables y de cadena cuando se ejecutan en un proceso de trabajo aislado.
Puede usar los siguientes tipos de parámetro para el enlace de salida:
-
byte[]- Si el valor del parámetro es null cuando finaliza la función, Functions no crea ningún mensaje. -
string- Si el valor del parámetro es null cuando finaliza la función, Functions no crea ningún mensaje. -
POJO: si el valor del parámetro no tiene el formato de objeto Java, se recibirá un error.
El mensaje de cola está disponible mediante context.bindings.<NAME>, donde <NAME> coincide con el nombre definido en function.json. Si la carga es JSON, el valor se deserializa en un objeto.
Connections
Importante
El enlace rabbitMQ no admite la autenticación y las identidades administradas de Microsoft Entra. Puede usar Azure Key Vault para administrar centralmente los cadena de conexión rabbitMQ. Para más información, consulte Administración de conexiones.
A partir de la versión 2.x de la extensión, hostName, userNameSettingy passwordSetting ya no se admiten para definir una conexión al servidor RabbitMQ. En su lugar, debe usar connectionStringSetting.
La connectionStringSetting propiedad solo puede aceptar el nombre de un par clave-valor en la configuración de la aplicación. No se puede establecer directamente un valor de cadena de conexión en el enlace.
Por ejemplo, cuando se ha establecido connectionStringSettingrabbitMQConnection en en la definición de enlace, la aplicación de funciones debe tener una configuración de aplicación denominada rabbitMQConnection que devuelva un valor de conexión como amqp://myuser:***@contoso.rabbitmq.example.com:5672 o una referencia de Azure Key Vault.
Al ejecutar localmente, también debe tener el valor de clave para connectionStringSetting definido en el archivo local.settings.json . De lo contrario, la aplicación no puede conectarse al servicio desde el equipo local y se produce un error.