Información general sobre los enlaces de salid 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 enlace de salida de RabbitMQ para enviar mensajes a 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 @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 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 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. |
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 . |
Vea el ejemplo de enlace de salida para obtener más detalles.
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 RabbitMQ . |
direction | Se debe establecer en out . |
name | 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. |
hostName | Nombre de host de la cola, por ejemplo, 10.26.45.210. Se omite cuando se usa connectStringSetting . |
userName | 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 . |
password | Nombre de la configuración de la aplicación que contiene la contraseña para acceder a la cola, como UserNameSetting: "< UserNameFromSettings >". 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 en local.settings.json . Por ejemplo, si ha definido connectionStringSetting: "rabbitMQConnection" , entonces tanto en el local.settings.json 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 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.
Para ver un ejemplo completo, consulte el ejemplo de C#.
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.
Consulte el ejemplo de Python.