RedisListTrigger pour Azure Functions
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
Type de déclencheur | Redis managé par Azure | Cache Azure pour Redis |
---|---|---|
Listes | Oui | Oui |
Important
Lorsque vous utilisez Azure Managed Redis ou les niveaux Entreprise de Azure Cache pour Redis, utilisez le port 10000 plutôt que le port 6380 ou 6379.
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, il est recommandé d’utiliser le modèle de Worker isolé plutôt que 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 | Par défaut |
---|---|---|---|
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 | Par défaut |
---|---|---|---|
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é. |