RedisListTrigger para Azure Functions
RedisListTrigger
extrae nuevos elementos de una lista y muestra esas entradas a la función.
Para más información sobre los desencadenadores y enlaces de Azure Cache for Redis, la extensión redis para Azure Functions.
Ámbito de disponibilidad para desencadenadores de funciones
Tipo de desencadenador | Azure Managed Redis | Azure Cache for Redis |
---|---|---|
Listas | Sí | Sí |
Importante
Al usar Azure Managed Redis o los niveles Enterprise de Azure Cache for Redis, use el puerto 10000 en lugar del puerto 6380 o 6379.
Importante
Los desencadenadores de Redis no se admiten actualmente para las funciones que se ejecutan en el plan de consumo.
Importante
El modelo de Node.js v4 para Functions aún no es compatible con la extensión azure Cache for Redis. Para más detalles acerca de cómo funciona el modelo v4, consulte la Guía para desarrolladores de Node.js de Azure Functions. Para obtener más información acerca de las diferencias entre v3 y v4, consulte la Guía de migración.
Importante
El modelo de Python v2 para Functions aún no es compatible con la extensión Azure Cache for Redis. Para más información sobre cómo funciona el modelo v2, consulte la Guía para desarrolladores de Python de Azure Functions.
Ejemplo
Importante
En el caso de las funciones de .NET, se recomienda usar el modelo de trabajo aislado en lugar del modelo en proceso. Para obtener una comparación de los modelos de trabajo en proceso y aislados, consulte las diferencias entre el modelo de trabajo aislado y el modelo en proceso para .NET en Azure Functions.
En el ejemplo siguiente se sondea la clave listTest
.:
using Microsoft.Extensions.Logging;
namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisListTrigger
{
public class SimpleListTrigger
{
private readonly ILogger<SimpleListTrigger> logger;
public SimpleListTrigger(ILogger<SimpleListTrigger> logger)
{
this.logger = logger;
}
[Function(nameof(SimpleListTrigger))]
public void Run(
[RedisListTrigger(Common.connectionStringSetting, "listTest")] string entry)
{
logger.LogInformation(entry);
}
}
}
En el ejemplo siguiente se sondea la clave listTest
en una instancia de Redis localhost en redisLocalhost
:
package com.function.RedisListTrigger;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;
public class SimpleListTrigger {
@FunctionName("SimpleListTrigger")
public void run(
@RedisListTrigger(
name = "req",
connection = "redisConnectionString",
key = "listTest",
pollingIntervalInMs = 1000,
maxBatchSize = 1)
String message,
final ExecutionContext context) {
context.getLogger().info(message);
}
}
Esta muestra usa el mismo archivo index.js
, con datos de enlace en el archivo function.json
.
Este es el archivo index.js
:
module.exports = async function (context, entry) {
context.log(entry);
}
En function.json
, estos son los datos de enlace:
{
"bindings": [
{
"type": "redisListTrigger",
"listPopFromBeginning": true,
"connection": "redisConnectionString",
"key": "listTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "index.js"
}
Esta muestra usa el mismo archivo run.ps1
, con datos de enlace en el archivo function.json
.
Este es el archivo run.ps1
:
param($entry, $TriggerMetadata)
Write-Host $entry
En function.json
, estos son los datos de enlace:
{
"bindings": [
{
"type": "redisListTrigger",
"listPopFromBeginning": true,
"connection": "redisConnectionString",
"key": "listTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
Esta muestra usa el mismo archivo __init__.py
, con datos de enlace en el archivo function.json
.
El modelo de programación de Python v1 requiere que defina enlaces en un archivo function.json independiente en la carpeta de funciones. Para más información, consulte la Guía para desarrolladores de Python.
Este es el archivo __init__.py
:
import logging
def main(entry: str):
logging.info(entry)
En function.json
, estos son los datos de enlace:
{
"bindings": [
{
"type": "redisListTrigger",
"listPopFromBeginning": true,
"connection": "redisConnectionString",
"key": "listTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
Atributos
Parámetro | Descripción | Necesario | Valor predeterminado |
---|---|---|---|
Connection |
Nombre de la configuración de la aplicación que contiene el cadena de conexión de caché, como:<cacheName>.redis.cache.windows.net:6380,password... |
Sí | |
Key |
Clave de la que se va a leer. Este campo se puede resolver mediante INameResolver . |
Sí | |
PollingIntervalInMs |
Con qué frecuencia sondear Redis en milisegundos. | Opcionales | 1000 |
MessagesPerWorker |
Cuántos mensajes debe procesar cada instancia de funciones. Se utiliza para determinar a cuántas instancias debe escalar la función. | Opcionales | 100 |
Count |
Número de entradas para extraer de Redis al mismo tiempo. Las entradas se procesan en paralelo. Solo se admite en Redis 6.2 y versiones posteriores con el argumento COUNT en LPOP y RPOP . |
Opcionales | 10 |
ListPopFromBeginning |
Determina si se extraen las entradas desde el principio mediante LPOP , o desde el final mediante RPOP . |
Opcionales | true |
anotaciones
Parámetro | Descripción | Necesario | Valor predeterminado |
---|---|---|---|
name |
"entrada" | ||
connection |
Nombre de la configuración de la aplicación que contiene el cadena de conexión de caché, como:<cacheName>.redis.cache.windows.net:6380,password... |
Sí | |
key |
Este campo se puede resolver mediante INameResolver. | Sí | |
pollingIntervalInMs |
Con qué frecuencia sondear Redis en milisegundos. | Opcionales | 1000 |
messagesPerWorker |
Cuántos mensajes debe procesar cada instancia de funciones. Se utiliza para determinar a cuántas instancias debe escalar la función. | Opcionales | 100 |
count |
Número de entradas para leer de Redis al mismo tiempo. Estos se procesan en paralelo. | Opcionales | 10 |
listPopFromBeginning |
Indica si se van a eliminar las entradas de secuencia después de ejecutar la función. | Sí | true |
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 | Opcionales | Valor predeterminado |
---|---|---|---|
type |
Nombre del desencadenador. | No | |
listPopFromBeginning |
Indica si se van a eliminar las entradas de secuencia después de ejecutar la función. Establécelo en true . |
Sí | true |
connection |
Nombre de la configuración de la aplicación que contiene el cadena de conexión de caché, como:<cacheName>.redis.cache.windows.net:6380,password... |
No | |
key |
Este campo se puede resolver mediante INameResolver . |
No | |
pollingIntervalInMs |
Con qué frecuencia sondear Redis en milisegundos. | Sí | 1000 |
messagesPerWorker |
Cuántos mensajes debe procesar cada instancia de funciones. Se utiliza para determinar a cuántas instancias debe escalar la función. | Sí | 100 |
count |
Número de entradas que se van a leer de la memoria caché al mismo tiempo. Las entradas se procesan en paralelo. | Sí | 10 |
name |
? | Sí | |
direction |
Establécelo en in . |
No |
Consulte la sección de ejemplos para ver ejemplos completos.
Uso
RedisListTrigger
extrae nuevos elementos de una lista y muestra esas entradas a la función. El desencadenador sondea Redis en un intervalo fijo configurable y usa LPOP
y RPOP
para extraer elementos de las listas.
Tipo | Descripción |
---|---|
byte[] |
El mensaje del canal. |
string |
El mensaje del canal. |
Custom |
El desencadenador utiliza la serialización Json.NET para asignar el mensaje del canal de string a un tipo personalizado. |