Compartir vía


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

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...
Key Clave de la que se va a leer. Este campo se puede resolver mediante INameResolver.
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...
key Este campo se puede resolver mediante INameResolver.
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. 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. 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. 1000
messagesPerWorker Cuántos mensajes debe procesar cada instancia de funciones. Se utiliza para determinar a cuántas instancias debe escalar la función. 100
count Número de entradas que se van a leer de la memoria caché al mismo tiempo. Las entradas se procesan en paralelo. 10
name ?
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.