RedisListTrigger pour Azure Functions (préversion)

Les RedisListTrigger nouveaux éléments s’affichent à partir d’une liste et les exposent à la fonction.

Pour plus d’informations sur les déclencheurs et les liaisons Azure Cache pour Redis, l’extension Redis pour Azure Functions.

Étendue de la disponibilité des déclencheurs de fonctions

Niveau De base Standard, Premium Enterprise, Enterprise Flash
Listes Oui Oui Oui

Important

Les déclencheurs Redis ne sont actuellement pas pris en charge par les fonctions exécutées dans le plan Consommation.

Important

Le modèle Node.js v4 pour Functions n’est pas encore pris en charge par l’extension Azure Cache pour Redis. Pour plus d’informations sur le fonctionnement du modèle v4, reportez-vous au guide du développeur Azure Functions Node.js. Pour plus d’informations sur les différences entre v3 et v4, consultez le guide de migration.

Important

Le modèle Python v2 pour Functions n’est pas encore pris en charge par l’extension Azure Cache pour Redis. Pour plus d’informations sur le fonctionnement du modèle v2, consultez le guide du développeur Python sur Azure Functions.

Exemple

Important

Pour les fonctions .NET, l’utilisation du modèle worker isolé est recommandée sur le modèle in-process . Pour une comparaison des modèles worker in-process et isolés , consultez les différences entre le modèle worker isolé et le modèle in-process pour .NET sur Azure Functions.

L’exemple suivant interroge la clé 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);
        }
    }
}

L’exemple suivant interroge la clé listTest sur un localhost Redis instance à l’adresse 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);
    }
}

Cet exemple utilise le même fichier index.js, avec des données de liaison dans le fichier function.json.

Voici le fichier index.js :

module.exports = async function (context, entry) {
    context.log(entry);
}

À partir de function.json, voici les données de liaison :

{
    "bindings": [
        {
            "type": "redisListTrigger",
            "listPopFromBeginning": true,
            "connection": "redisConnectionString",
            "key": "listTest",
            "pollingIntervalInMs": 1000,
            "maxBatchSize": 16,
            "name": "entry",
            "direction": "in"
        }
      ],
    "scriptFile": "index.js"
}

Cet exemple utilise le même fichier run.ps1, avec des données de liaison dans le fichier function.json.

Voici le fichier run.ps1 :

param($entry, $TriggerMetadata)
Write-Host $entry

À partir de function.json, voici les données de liaison :

{
    "bindings": [
        {
            "type": "redisListTrigger",
            "listPopFromBeginning": true,
            "connection": "redisConnectionString",
            "key": "listTest",
            "pollingIntervalInMs": 1000,
            "maxBatchSize": 16,
            "name": "entry",
            "direction": "in"
        }
      ],
    "scriptFile": "run.ps1"
}

Cet exemple utilise le même fichier __init__.py, avec des données de liaison dans le fichier function.json.

Le modèle de programmation Python v1 vous oblige à définir des liaisons dans un fichier function.json distinct dans le dossier de fonction. Pour plus d’informations, consultez le guide des développeurs Python.

Voici le fichier __init__.py :

import logging

def main(entry: str):
    logging.info(entry)

À partir de function.json, voici les données de liaison :

{
    "bindings": [
        {
            "type": "redisListTrigger",
            "listPopFromBeginning": true,
            "connection": "redisConnectionString",
            "key": "listTest",
            "pollingIntervalInMs": 1000,
            "maxBatchSize": 16,
            "name": "entry",
            "direction": "in"
        }
      ],
    "scriptFile": "__init__.py"
}

Attributs

Paramètre Description Obligatoire Default
Connection Nom du paramètre d’application qui contient le cache chaîne de connexion, par exemple :<cacheName>.redis.cache.windows.net:6380,password... Oui
Key Clé à partir de laquelle lire. Ce champ peut être résolu à l’aide de INameResolver. Oui
PollingIntervalInMs Fréquence d’interrogation de Redis en millisecondes. Facultatif 1000
MessagesPerWorker Nombre de messages que chaque fonction instance doit traiter. Utilisé pour déterminer le nombre d’instances à mettre à l’échelle la fonction. Facultatif 100
Count Nombre d’entrées à dépiler à partir de Redis à la fois. Les entrées sont traitées en parallèle. Uniquement pris en charge sur Redis 6.2+ à l’aide de l’argument COUNT dans LPOP et RPOP. Facultatif 10
ListPopFromBeginning Détermine s’il faut faire apparaître des entrées à partir du début à l’aide de LPOP ou d’afficher des éléments à partir de la fin à l’aide de RPOP. Facultatif true

Annotations

Paramètre Description Obligatoire Default
name « entrée »
connection Nom du paramètre d’application qui contient le cache chaîne de connexion, par exemple :<cacheName>.redis.cache.windows.net:6380,password... Oui
key Ce champ peut être résolu à l’aide de INameResolver. Oui
pollingIntervalInMs Fréquence d’interrogation de Redis en millisecondes. Facultatif 1000
messagesPerWorker Nombre de messages que chaque fonction instance doit traiter. Utilisé pour déterminer le nombre d’instances à mettre à l’échelle la fonction. Facultatif 100
count Nombre d’entrées à lire à partir de Redis à la fois. Celles-ci sont traitées en parallèle. Facultatif 10
listPopFromBeginning Indique s’il faut supprimer les entrées de flux après l’exécution de la fonction. Oui true

Configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json.

Propriété function.json Description Facultatif Par défaut
type Nom du déclencheur. Non
listPopFromBeginning Indique s’il faut supprimer les entrées de flux après l’exécution de la fonction. Réglez sur true. Oui true
connection Nom du paramètre d’application qui contient le cache chaîne de connexion, par exemple :<cacheName>.redis.cache.windows.net:6380,password... Non
key Ce champ peut être résolu à l’aide de INameResolver. Non
pollingIntervalInMs Fréquence d’interrogation de Redis en millisecondes. Oui 1000
messagesPerWorker Nombre de messages que chaque fonction instance doit traiter. Utilisé pour déterminer le nombre d’instances à mettre à l’échelle la fonction. Oui 100
count Nombre d’entrées à lire à partir du cache à la fois. Les entrées sont traitées en parallèle. Oui 10
name ? Oui
direction Réglez sur in. Non

Pour obtenir des exemples complets, consultez la section Exemple.

Utilisation

Les RedisListTrigger nouveaux éléments s’affichent à partir d’une liste et les exposent à la fonction. Le déclencheur interroge Redis à un intervalle fixe configurable et utilise LPOP et RPOP pour afficher des entrées dans les listes.

Type Description
byte[] Message du canal.
string Message du canal.
Custom Le déclencheur utilise la sérialisation Json.NET pour mapper le message du canal d’un string à un type personnalisé.