Introducción al desencadenador de RabbitMQ para Azure Functions
Nota
Los enlaces de RabbitMQ solo se admiten por completo en planes Premium y Dedicado. El consumo no se admite.
Use el desencadenador de RabbitMQ para responder a los mensajes de una cola de RabbitMQ.
Para obtener información sobre los detalles de instalación y configuración, vea la información general.
Ejemplo
Se puede crear una función 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# ejecutándose en versiones de .NET que son y no son LTS y .NET Framework.
- Modelo en curso: función C# compilada que se ejecuta en el mismo proceso que el tiempo de ejecución de 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)
Atributos
Tanto las bibliotecas de C# en proceso como las de proceso de trabajo aislado usan el atributo para definir la función. El script de C#, en su lugar, usa un archivo de configuración function.json.
El constructor del atributo toma los parámetros siguientes:
Parámetro | Descripción |
---|---|
QueueName | Nombre de la cola desde la que se reciben los mensajes. |
HostName | Nombre de host de la cola, por ejemplo, 10.26.45.210. Se omite cuando se usa ConnectStringSetting . |
UserNameSetting | Nombre de la configuración de la aplicación que contiene el nombre de usuario para acceder a la cola, como UserNameSetting: "%< UserNameFromSettings >%" . Se omite cuando se usa ConnectStringSetting . |
PasswordSetting | Nombre de la configuración de la aplicación que contiene la contraseña para acceder a la cola, como PasswordSetting: "%< PasswordFromSettings >%" . Se omite cuando se usa ConnectStringSetting . |
ConnectionStringSetting | El nombre de la configuración de la aplicación que contiene la cadena de conexión de la cola de mensajes RabbitMQ. El desencadenador no funcionará cuando especifique la cadena de conexión directamente en lugar de hacerlo a través de una configuración de la aplicación. Por ejemplo, si ha definido ConnectionStringSetting: "rabbitMQConnection" , entonces tanto en el ConnectionStringSetting: "rabbitMQConnection" como en su aplicación de funciones necesitará una configuración como "RabbitMQConnection" : "< ActualConnectionstring >" . |
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 . |
En las bibliotecas de clases de C#, use el atributo RabbitMQTrigger.
Este es un atributo RabbitMQTrigger
en una firma de método para una biblioteca de procesos de trabajo aislados:
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
FunctionContext context)
{
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. |
hostName | Nombre de host de la cola, por ejemplo, 10.26.45.210. Se omite cuando se usa ConnectStringSetting . |
userNameSetting | Nombre de la configuración de la aplicación que contiene el nombre de usuario para acceder a la cola, como UserNameSetting: "%< UserNameFromSettings >%" . Se omite cuando se usa ConnectStringSetting . |
passwordSetting | Nombre de la configuración de la aplicación que contiene la contraseña para acceder a la cola, como PasswordSetting: "%< PasswordFromSettings >%" . Se omite cuando se usa ConnectStringSetting . |
connectionStringSetting | El nombre de la configuración de la aplicación que contiene la cadena de conexión de la cola de mensajes RabbitMQ. El desencadenador no funcionará cuando especifique la cadena de conexión directamente en lugar de hacerlo a través de una configuración de la aplicación. Por ejemplo, si ha definido ConnectionStringSetting: "rabbitMQConnection" , entonces tanto en el ConnectionStringSetting: "rabbitMQConnection" como en su aplicación de funciones necesitará una configuración como "RabbitMQConnection" : "< ActualConnectionstring >" . |
port | 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 . |
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 |
---|---|
type | Se debe establecer en RabbitMQTrigger . |
direction | Se debe establecer en in . |
name | 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. |
hostName | Nombre de host de la cola, por ejemplo, 10.26.45.210. Se omite cuando se usa connectStringSetting . |
userNameSetting | Nombre de la configuración de la aplicación que contiene el nombre de usuario para acceder a la cola, como UserNameSetting: "%< UserNameFromSettings >%" . Se omite cuando se usa connectStringSetting . |
passwordSetting | Nombre de la configuración de la aplicación que contiene la contraseña para acceder a la cola, como PasswordSetting: "%< PasswordFromSettings >%" . Se omite cuando se usa connectStringSetting . |
connectionStringSetting | El nombre de la configuración de la aplicación que contiene la cadena de conexión de la cola de mensajes RabbitMQ. El desencadenador no funcionará cuando especifique la cadena de conexión directamente en lugar de hacerlo a través de una configuración de la aplicación. Por ejemplo, si ha definido connectionStringSetting: "rabbitMQConnection" , entonces tanto en el connectionStringSetting: "rabbitMQConnection" como en su aplicación de funciones necesitará una configuración como "rabbitMQConnection" : "< ActualConnectionstring >" . |
port | 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 . |
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.
Para ver un ejemplo completo, consulte el ejemplo de C#.
Consulte las anotaciones de Java.
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.
Consulte el ejemplo de Python.
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.
configuración de host.json
En esta sección se describen las opciones de configuración disponibles para este enlace en las versiones 2.x y posteriores. La configuración del archivo host.json se aplica a todas las funciones de una instancia de la aplicación de funciones. El siguiente archivo host.json de ejemplo contiene solo la configuración de la versión 2.x+ para este enlace. Para obtener más información sobre la configuración de la aplicación de funciones en las versiones 2.x y posteriores, consulte la referencia de host.json para Azure Functions.
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
"prefetchCount": 100,
"queueName": "queue",
"connectionString": "amqp://user:password@url:port",
"port": 10
}
}
}
Propiedad | Valor predeterminado | Descripción |
---|---|---|
prefetchCount | 30 | Obtiene o establece el número de mensajes que el destinatario del mensaje puede solicitar simultáneamente y lo almacena en caché. |
queueName | N/D | Nombre de la cola desde la que se reciben los mensajes. |
connectionString | N/D | La cadena de conexión de la cola de mensajes de RabbitMQ. La cadena de conexión se especifica directamente aquí y no a través de una configuración de aplicación. |
port | 0 | (se omite si se usa connectionString) Obtiene o establece el puerto utilizado. El valor predeterminado es 0, que apunta a la configuración de puerto predeterminado del cliente de rabbitmq: 5672. |
Pruebas locales
Nota
connectionString tiene prioridad sobre "hostName", "userName" y "password". Si todos están establecidos, connectionString invalidará a los otros dos.
Si está realizando una prueba de forma local sin una cadena de conexión, debería configurar los valores "hostName", "userName" y "password" si es aplicable en la sección "rabbitMQ" de host.json:
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
...
"hostName": "localhost",
"username": "userNameSetting",
"password": "passwordSetting"
}
}
}
Propiedad | Valor predeterminado | Descripción |
---|---|---|
hostName | N/D | (se omite si se usa connectionString) Nombre de host de la cola (por ejemplo: 10.26.45.210) |
userName | N/D | (se omite si se usa connectionString) Nombre para acceder a la cola |
password | N/D | (se omite si se usa connectionString) Contraseña para acceder la cola |
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, puede habilitar Runtime Scale Monitoring (Supervisión de la escala de tiempo de ejecución) mediante el comando siguiente:
az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites
Supervisión del 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}:15672 e inicie sesión con su nombre de usuario y contraseña.