RedisStreamTrigger pour Azure Functions
RedisStreamTrigger
lit de nouvelles entrées à partir d’un flux et expose ces éléments à la fonction.
Étendue de la disponibilité des déclencheurs de fonctions
Type de déclencheur | Redis managé par Azure | Cache Azure pour Redis |
---|---|---|
Flux | 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.
Modèle d’exécution | Description |
---|---|
Modèle de worker isolé | Le code de votre fonction s’exécute dans un processus Worker .NET distinct. Utilisez avec les versions prises en charge de .NET et .NET Framework. Pour plus d’informations, consultez Développer les fonctions de processus Worker isolé .NET. |
Modèle in-process | Le code de votre fonction s’exécute dans le même processus que le processus hôte Functions. Prend uniquement en charge les versions LTS (Long Term Support) de .NET. Pour plus d’informations, consultez Développer des fonctions de bibliothèque de classes .NET. |
using Microsoft.Extensions.Logging;
namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisStreamTrigger
{
internal class SimpleStreamTrigger
{
private readonly ILogger<SimpleStreamTrigger> logger;
public SimpleStreamTrigger(ILogger<SimpleStreamTrigger> logger)
{
this.logger = logger;
}
[Function(nameof(SimpleStreamTrigger))]
public void Run(
[RedisStreamTrigger(Common.connectionStringSetting, "streamKey")] string entry)
{
logger.LogInformation(entry);
}
}
}
package com.function.RedisStreamTrigger;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;
public class SimpleStreamTrigger {
@FunctionName("SimpleStreamTrigger")
public void run(
@RedisStreamTrigger(
name = "req",
connection = "redisConnectionString",
key = "streamTest",
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": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"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 | ConvertTo-Json)
À partir de function.json
, voici les données de liaison :
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
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.
Cet exemple utilise le même fichier __init__.py
, avec des données de liaison dans le fichier function.json
.
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": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
Attributs
Paramètres | 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. | Oui | |
PollingIntervalInMs |
Fréquence d’interrogation du serveur Redis en millisecondes. | Facultatif | 1000 |
MessagesPerWorker |
Nombre de messages que chaque worker de fonctions doit traiter. Utilisé pour déterminer le nombre de workers à mettre à l’échelle la fonction. | Facultatif | 100 |
Count |
Nombre d’éléments à extraire de Redis à la fois. | Facultatif | 10 |
DeleteAfterProcess |
Indique si la fonction supprime les entrées de flux après le traitement. | Facultatif | false |
Annotations
Paramètre | Description | Obligatoire | Par défaut |
---|---|---|---|
name |
entry |
Oui | |
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. | Oui | |
pollingIntervalInMs |
Fréquence d’interrogation de Redis en millisecondes. | Facultatif | 1000 |
messagesPerWorker |
Nombre de messages que chaque worker de fonctions doit traiter. Il est utilisé pour déterminer le nombre de workers à mettre à l’échelle la fonction. | Facultatif | 100 |
count |
Nombre d’entrées à lire à partir de Redis à la fois. Les entrées sont traitées en parallèle. | Facultatif | 10 |
deleteAfterProcess |
Indique s’il faut supprimer les entrées de flux après l’exécution de la fonction. | Facultatif | false |
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és function.json | Description | Obligatoire | Par défaut |
---|---|---|---|
type |
Oui | ||
deleteAfterProcess |
Facultatif | false |
|
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. | Oui | |
pollingIntervalInMs |
Fréquence d’interrogation de Redis en millisecondes. | Facultatif | 1000 |
messagesPerWorker |
(facultatif) Nombre de messages que chaque worker de fonctions doit traiter. Utilisé pour déterminer le nombre de workers auquel la fonction doit être mise à l’échelle | Facultatif | 100 |
count |
Nombre d’entrées à lire à partir de Redis à la fois. Celles-ci sont traitées en parallèle. | Facultatif | 10 |
name |
Oui | ||
direction |
Oui |
Pour obtenir des exemples complets, consultez la section Exemple.
Utilisation
La fonction Azure RedisStreamTrigger
lit les nouvelles entrées à partir d’un flux et les expose à la fonction.
Le déclencheur interroge Redis à un intervalle fixe configurable et utilise XREADGROUP
pour lire des éléments du flux.
Le groupe de consommateurs pour toutes les instances d’une fonction est le nom de la fonction, autrement dit, SimpleStreamTrigger
pour l’exemple StreamTrigger.
Chaque instance de fonctions utilise ou WEBSITE_INSTANCE_ID
génère un GUID aléatoire à utiliser comme nom de consommateur au sein du groupe pour vous assurer que les instances mises à l’échelle de la fonction ne lisent pas les mêmes messages à partir du flux.
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é. |