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 desencadenador de RabbitMQ para responder a los mensajes de 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 @RabbitMQTrigger de los tipos de RabbitMQ para Java para describir la configuración de un desencadenador de cola RabbitMQ. La función toma el mensaje colocado en la cola y lo agrega a los registros.
@FunctionName("RabbitMQTriggerExample")
public void run(
@RabbitMQTrigger(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "queue") String input,
final ExecutionContext context)
{
context.getLogger().info("Java HTTP trigger processed a request." + input);
}
En el ejemplo siguiente se muestra un enlace de desencadenador de RabbitMQ en un archivo function.json y una función de JavaScript que usa el enlace. La función lee y registra un mensaje de RabbitMQ.
Estos son los datos de enlace del archivo function.json:
{
"bindings": [
{
"name": "myQueueItem",
"type": "rabbitMQTrigger",
"direction": "in",
"queueName": "queue",
"connectionStringSetting": "rabbitMQConnectionAppSetting"
}
]
}
Este es el código del script de JavaScript:
module.exports = async function (context, myQueueItem) {
context.log('JavaScript RabbitMQ trigger function processed work item', myQueueItem);
};
En el ejemplo siguiente se muestra cómo leer un mensaje de cola de RabbitMQ a través de un desencadenador.
Un enlace de RabbitMQ se define en function.json, donde type se establece en RabbitMQTrigger.
{
"scriptFile": "__init__.py",
"bindings": [
{
"name": "myQueueItem",
"type": "rabbitMQTrigger",
"direction": "in",
"queueName": "queue",
"connectionStringSetting": "rabbitMQConnectionAppSetting"
}
]
}
import logging
import azure.functions as func
def main(myQueueItem) -> None:
logging.info('Python RabbitMQ trigger function processed a queue item: %s', myQueueItem)
Los ejemplos de PowerShell no están disponibles actualmente.
Atributos
Tanto el proceso de trabajo aislado como las bibliotecas de C# en proceso usan RabbitMQTriggerAttribute para definir la función, donde las propiedades específicas del atributo dependen de la versión de la extensión.
El constructor del atributo acepta estos parámetros:
| Parámetro | Descripción |
|---|---|
| QueueName (Nombre de la cola) | 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. |
anotaciones
La anotación RabbitMQTrigger permite crear una función que se ejecuta al crear un mensaje de RabbitMQ.
La anotación admite las siguientes opciones de configuración:
| Parámetro | 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 | Valor booleano que se puede establecer para true indicar que se debe deshabilitar la validación del certificado. El valor predeterminado es false. 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 RabbitMQTrigger. |
| dirección | Se debe establecer en in. |
| nombre | Nombre de la variable que representa la cola en el código de la funció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 | Valor booleano que se puede establecer para true indicar que se debe deshabilitar la validación del certificado. El valor predeterminado es false. 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 RabbitMQ depende de la modalidad de C# usada.
Actualmente, los enlaces de RabbitMQ solo admiten tipos de objeto serializables y de cadena cuando se ejecutan en un proceso aislado.
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.
Colas de mensajes fallidos
Las colas de mensajes fallidos y los intercambios no se pueden controlar ni configurar desde el desencadenador de RabbitMQ. Para usar colas de mensajes fallidos, configure previamente la cola utilizada por el desencadenador en RabbitMQ. Consulte la documentación de RabbitMQ.
Habilitación del escalado de tiempo de ejecución
Para que el desencadenador de RabbitMQ se escale horizontalmente a varias instancias, debe estar habilitada la configuración Runtime Scale Monitoring (Supervisión de la escala de tiempo de ejecución).
En el portal, esta configuración se puede encontrar en Configuración>Configuración del tiempo de ejecución de la función para la aplicación de funciones.
En la CLI de Azure, puede habilitar la supervisión de escalado en tiempo de ejecución mediante este comando:
az resource update -resource-group <RESOURCE_GROUP> -name <APP_NAME>/config/web \
--set properties.functionsRuntimeScaleMonitoringEnabled=1 \
--resource-type Microsoft.Web/sites
Supervisión de un punto de conexión de RabbitMQ
Para supervisar las colas e intercambios de un determinado punto de conexión de RabbitMQ:
- Habilite el complemento de administración de RabbitMQ
- Vaya a
http://{node-hostname}:15672e inicie sesión con el nombre de usuario y la contraseña.