RedisListTrigger per Funzioni di Azure

Vengono RedisListTrigger visualizzati nuovi elementi da un elenco e tali voci vengono visualizzati nella funzione.

Per altre informazioni sui trigger e le associazioni di cache di Azure per Redis, Estensione Redis per Funzioni di Azure.

Ambito della disponibilità per i trigger di funzioni

Livello Di base Standard, Premium Enterprise, Enterprise Flash
Elenchi

Importante

I trigger Redis non sono attualmente supportati per le funzioni in esecuzione nel piano a consumo.

Importante

Il modello Node.js v4 per Funzioni non è ancora supportato dall'estensione cache di Azure per Redis. Per altre informazioni sul funzionamento del modello v4, vedere la guida per sviluppatori di Funzioni di Azure Node.js. Per altre informazioni sulle differenze tra v3 e v4, vedere la guida alla migrazione.

Importante

Il modello Python v2 per Funzioni non è ancora supportato dall'estensione cache di Azure per Redis. Per altre informazioni sul funzionamento del modello v2, vedere la guida per sviluppatori python Funzioni di Azure.

Esempio

Importante

Per le funzioni .NET, è consigliabile usare il modello di lavoro isolato nel modello in-process. Per un confronto tra i modelli di lavoro in-process e isolati, vedere le differenze tra il modello di lavoro isolato e il modello in-process per .NET in Funzioni di Azure.

Nell'esempio seguente viene eseguito il polling della chiave 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'esempio seguente esegue il polling della chiave listTest in un'istanza di Redis localhost all’indirizzo 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);
    }
}

In questo esempio viene usato lo stesso index.js file, con i dati di associazione nel function.json file.

Ecco il index.js file:

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

Da function.json, ecco i dati di associazione:

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

In questo esempio viene usato lo stesso run.ps1 file, con i dati di associazione nel function.json file.

Ecco il run.ps1 file:

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

Da function.json, ecco i dati di associazione:

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

In questo esempio viene usato lo stesso __init__.py file, con i dati di associazione nel function.json file.

Il modello di programmazione Python v1 richiede di definire associazioni in un file di function.json separato nella cartella della funzione. Per altre informazioni, vedere la Guida per sviluppatori Python.

Ecco il __init__.py file:

import logging

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

Da function.json, ecco i dati di associazione:

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

Attributi

Parametro Descrizione Richiesto Valore predefinito
Connection Nome dell'impostazione dell'applicazione che contiene la cache stringa di connessione, ad esempio:<cacheName>.redis.cache.windows.net:6380,password...
Key Chiave da cui leggere. Questo campo può essere risolto usando INameResolver.
PollingIntervalInMs Frequenza con cui eseguire il polling di Redis in millisecondi. Facoltativo 1000
MessagesPerWorker Numero di messaggi che ogni istanza di funzioni deve elaborare. Usato per determinare il numero di istanze a cui deve essere ridimensionata la funzione. Facoltativo 100
Count Numero di voci da visualizzare da Redis contemporaneamente. Le voci vengono elaborate in parallelo. Supportato solo in Redis 6.2+ usando l'argomento COUNT in LPOP e RPOP. Facoltativo 10
ListPopFromBeginning Determina se visualizzare le voci dall'inizio utilizzando LPOPo per visualizzare le voci dalla fine utilizzando RPOP. Facoltativo true

Annotazioni

Parametro Descrizione Richiesto Valore predefinito
name "entry"
connection Nome dell'impostazione dell'applicazione che contiene la cache stringa di connessione, ad esempio:<cacheName>.redis.cache.windows.net:6380,password...
key Questo campo può essere risolto usando INameResolver.
pollingIntervalInMs Frequenza con cui eseguire il polling di Redis in millisecondi. Facoltativo 1000
messagesPerWorker Numero di messaggi che ogni istanza di funzioni deve elaborare. Usato per determinare il numero di istanze a cui deve essere ridimensionata la funzione. Facoltativo 100
count Numero di voci da leggere da Redis contemporaneamente. Tali elementi vengono elaborati in parallelo. Facoltativo 10
listPopFromBeginning Indica se eliminare le voci del flusso dopo l'esecuzione della funzione. true

Impostazione

Nella tabella seguente sono illustrate le proprietà di configurazione dell'associazione impostate nel file function.json.

function.json, proprietà Descrizione Facoltativo Default
type Nome del trigger. No
listPopFromBeginning Indica se eliminare le voci del flusso dopo l'esecuzione della funzione. Impostare su true. true
connection Nome dell'impostazione dell'applicazione che contiene la cache stringa di connessione, ad esempio:<cacheName>.redis.cache.windows.net:6380,password... No
key Questo campo può essere risolto usando INameResolver. No
pollingIntervalInMs Frequenza con cui eseguire il polling di Redis in millisecondi. 1000
messagesPerWorker Numero di messaggi che ogni istanza di funzioni deve elaborare. Usato per determinare il numero di istanze a cui deve essere ridimensionata la funzione. 100
count Numero di voci da leggere dalla cache contemporaneamente. Le voci vengono elaborate in parallelo. 10
name ?
direction Impostare su in. No

Per esempi completi, vedere la sezione di esempio.

Utilizzo

Vengono RedisListTrigger visualizzati nuovi elementi da un elenco e tali voci vengono visualizzati nella funzione. Il trigger esegue il polling di Redis a un intervallo fisso configurabile e usa LPOP e RPOP per visualizzare le voci dagli elenchi.

Tipo Descrizione
byte[] Messaggio dal canale.
string Messaggio dal canale.
Custom Il trigger usa Json.NET serializzazione per eseguire il mapping del messaggio dal canale da a string in un tipo personalizzato.