Enlaces de Azure Service Bus en Azure Functions
Azure Functions se integra con Azure Service Bus mediante desencadenadores y enlaces. La integración con Service Bus permite crear funciones que reaccionan ante y envían mensajes de cola o tema.
Acción | Tipo |
---|---|
Ejecutar una función cuando se crea un mensaje de cola o tema de Service Bus | Desencadenador |
Enviar mensajes de Azure Service Bus | Enlace de salida |
Instalación de la extensión
El paquete NuGet de la extensión que instale depende del modo de C# que esté usando en la aplicación de funciones:
Las funciones se ejecutan en el mismo proceso que el host de Functions. Para más información, consulte Desarrollo de funciones de la biblioteca de clases de C# con Azure Functions.
Para agregar la extensión al proyecto, instale este paquete NuGet.
La funcionalidad de la extensión varía en función de la versión de la extensión:
Esta versión presenta la posibilidad de conectarse con una identidad en lugar de un secreto. Para obtener un tutorial sobre cómo configurar las aplicaciones de funciones con identidades administradas, consulte el tutorial Creación de una aplicación de funciones con conexiones basadas en identidades.
Esta versión permite enlazar a tipos de Azure.Messaging.ServiceBus.
Esta versión de extensión está disponible instalando este paquete NuGet, versión 5.x o posterior.
Instalación del conjunto
El enlace de Service Bus forma parte de un conjunto de extensiones, que se especifica en el archivo de proyecto host.json. Es posible que tenga que modificar este conjunto para cambiar la versión de los enlaces o en caso de que los conjuntos aún no estén instalados. Para obtener más información, consulte Conjuntos de extensiones.
Esta versión presenta la posibilidad de conectarse con una identidad en lugar de un secreto. Para obtener un tutorial sobre cómo configurar las aplicaciones de funciones con identidades administradas, consulte el tutorial Creación de una aplicación de funciones con conexiones basadas en identidades.
Para agregar esta versión de la extensión desde el conjunto de extensiones v3, puede agregar o reemplazar el código siguiente en el archivo host.json
:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.3.0, 4.0.0)"
}
}
Para obtener más información, consulte Actualización de las extensiones.
configuración de host.json
En esta sección se describen las opciones de configuración disponibles para este enlace, que depende de la versión del runtime y de la extensión.
{
"version": "2.0",
"extensions": {
"serviceBus": {
"clientRetryOptions":{
"mode": "exponential",
"tryTimeout": "00:01:00",
"delay": "00:00:00.80",
"maxDelay": "00:01:00",
"maxRetries": 3
},
"prefetchCount": 0,
"transportType": "amqpWebSockets",
"webProxy": "https://proxyserver:8080",
"autoCompleteMessages": true,
"maxAutoLockRenewalDuration": "00:05:00",
"maxConcurrentCalls": 16,
"maxConcurrentSessions": 8,
"maxMessageBatchSize": 1000,
"sessionIdleTimeout": "00:01:00",
"enableCrossEntityTransactions": false
}
}
}
La configuración clientRetryOptions
solo se aplica a las interacciones con el servicio Service Bus. No afectan a los reintentos de las ejecuciones de funciones. Para obtener más información, vea Reintentos.
Propiedad | Valor predeterminado | Descripción |
---|---|---|
mode | Exponential |
Enfoque que se debe usar para calcular los retrasos de reintento. El modo exponencial predeterminado aplica un retraso a los reintentos en función de una estrategia de interrupción, en la que cada intento aumenta la duración que espera antes de volver a intentarlo. El modo Fixed reintenta la operación a intervalos fijos, donde cada retraso tiene una duración uniforme. |
tryTimeout | 00:01:00 |
Duración máxima que se debe esperar para una operación por intento. |
delay | 00:00:00.80 |
Factor de retraso o de interrupción que se aplicará entre reintentos. |
maxDelay | 00:01:00 |
Retraso máximo para permitir entre los reintentos. |
maxRetries | 3 |
Número máximo de reintentos antes de considerar que hay un error en la operación asociada. |
prefetchCount | 0 |
Obtiene o establece el número de mensajes que el destinatario del mensaje puede solicitar simultáneamente. |
transportType | amqpTcp | El protocolo y el transporte que se usan para comunicarse con Service Bus. Opciones disponibles: amqpTcp , amqpWebSockets . |
webProxy | N/D | Proxy que se usará para comunicarse con Service Bus a través de sockets web. Recuerde que no se puede usar un proxy con el transporte amqpTcp . |
autoCompleteMessages | true |
Determina si los mensajes se completan automáticamente o no después de la ejecución correcta de la función, y se debe usar en lugar de la opción de configuración autoComplete . |
maxAutoLockRenewalDuration | 00:05:00 |
Duración máxima dentro de la cual el bloqueo de mensajes se renovará automáticamente. Esta configuración solo se aplica a las funciones que reciben un único mensaje a la vez. |
maxConcurrentCalls | 16 |
Número máximo de llamadas simultáneas a la devolución de llamada que se deben iniciar por instancia escalada. De forma predeterminada, el entorno de ejecución de Functions procesa simultáneamente varios mensajes. Esta configuración solo se usa cuando la propiedad isSessionsEnabled o el atributo en el desencadenador se establece en false . Esta configuración solo se aplica a las funciones que reciben un único mensaje a la vez. |
maxConcurrentSessions | 8 |
Número máximo de sesiones que se puede administrar simultáneamente por instancia con escala. Esta configuración solo se usa cuando la propiedad isSessionsEnabled o el atributo en el desencadenador se establece en true . Esta configuración solo se aplica a las funciones que reciben un único mensaje a la vez. |
maxMessageBatchSize | 1000 |
Número máximo de mensajes que se pasarán a cada llamada de función. Este ajuste solo se aplica a las funciones que reciben un lote de mensajes. |
sessionIdleTimeout | N/D | Cantidad máxima de tiempo que se esperará a que se reciba un mensaje para la sesión activa actualmente. Una vez transcurrido este tiempo, se cerrará la sesión y la función intentará procesar otra sesión. |
enableCrossEntityTransactions | false |
Si se habilitan o no las transacciones que abarcan varias entidades en un espacio de nombres de Service Bus. |