Udostępnij za pośrednictwem


RedisListTrigger dla usługi Azure Functions

Polecenie RedisListTrigger wyskakuje nowe elementy z listy i wyświetla te wpisy do funkcji.

Aby uzyskać więcej informacji na temat wyzwalaczy i powiązań usługi Azure Cache for Redis, rozszerzenie redis dla usługi Azure Functions.

Zakres dostępności wyzwalaczy funkcji

Warstwa Podstawowy Standard, Premium Enterprise, Enterprise Flash
Listy Tak Tak Tak

Ważne

Wyzwalacze usługi Redis nie są obecnie obsługiwane w przypadku funkcji uruchomionych w planie Zużycie.

Ważne

Model Node.js w wersji 4 dla usługi Functions nie jest jeszcze obsługiwany przez rozszerzenie usługi Azure Cache for Redis. Aby uzyskać więcej informacji na temat sposobu działania modelu w wersji 4, zapoznaj się z przewodnikiem dewelopera dotyczącym usługi Azure Functions Node.js. Aby dowiedzieć się więcej o różnicach między wersjami 3 i v4, zapoznaj się z przewodnikiem migracji.

Ważne

Model języka Python w wersji 2 dla usługi Functions nie jest jeszcze obsługiwany przez rozszerzenie usługi Azure Cache for Redis. Aby uzyskać więcej informacji na temat sposobu działania modelu w wersji 2, zapoznaj się z przewodnikiem dla deweloperów języka Python usługi Azure Functions.

Przykład

Ważne

W przypadku funkcji platformy .NET używanie izolowanego modelu procesu roboczego jest zalecane w modelu w procesie. Aby zapoznać się z porównaniem modeli procesów procesowych i izolowanych procesów roboczych, zobacz różnice między izolowanym modelem procesu roboczego a modelem procesu dla platformy .NET w usłudze Azure Functions.

Poniższy przykład sonduje klucz 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);
        }
    }
}

Poniższy przykład sonduje klucz listTest w wystąpieniu usługi Redis localhost pod adresem 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);
    }
}

W tym przykładzie użyto tego samego index.js pliku z danymi powiązania w function.json pliku.

index.js Oto plik:

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

W function.jsonpliku oto dane powiązania:

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

W tym przykładzie użyto tego samego run.ps1 pliku z danymi powiązania w function.json pliku.

run.ps1 Oto plik:

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

W function.jsonpliku oto dane powiązania:

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

W tym przykładzie użyto tego samego __init__.py pliku z danymi powiązania w function.json pliku.

Model programowania w języku Python w wersji 1 wymaga zdefiniowania powiązań w osobnym pliku function.json w folderze funkcji. Aby uzyskać więcej informacji, zobacz przewodnik dla deweloperów języka Python.

__init__.py Oto plik:

import logging

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

W function.jsonpliku oto dane powiązania:

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

Atrybuty

Parametr opis Wymagani Wartość domyślna
Connection Nazwa ustawienia aplikacji, które zawiera parametry połączenia pamięci podręcznej, takie jak:<cacheName>.redis.cache.windows.net:6380,password... Tak
Key Klucz do odczytu z. To pole można rozpoznać przy użyciu polecenia INameResolver. Tak
PollingIntervalInMs Jak często sondować usługę Redis w milisekundach. Opcjonalnie 1000
MessagesPerWorker Ile komunikatów każde wystąpienie funkcji ma przetwarzać. Służy do określania liczby wystąpień, do których ma być skalowana funkcja. Opcjonalnie 100
Count Liczba wpisów do wyskakujących okienek z usługi Redis jednocześnie. Wpisy są przetwarzane równolegle. Obsługiwane tylko w usłudze Redis 6.2+ przy użyciu argumentu COUNT w systemach LPOP i RPOP. Opcjonalnie 10
ListPopFromBeginning Określa, czy należy wyskakować wpisy od początku przy użyciu polecenia LPOP, czy wyskakować wpisy z końca przy użyciu polecenia RPOP. Opcjonalnie true

Adnotacje

Parametr opis Wymagani Wartość domyślna
name "entry"
connection Nazwa ustawienia aplikacji, które zawiera parametry połączenia pamięci podręcznej, takie jak:<cacheName>.redis.cache.windows.net:6380,password... Tak
key To pole można rozpoznać przy użyciu elementu INameResolver. Tak
pollingIntervalInMs Jak często sondować usługę Redis w milisekundach. Opcjonalnie 1000
messagesPerWorker Ile komunikatów każde wystąpienie funkcji ma przetwarzać. Służy do określania liczby wystąpień, do których ma być skalowana funkcja. Opcjonalnie 100
count Liczba wpisów do odczytu z usługi Redis jednocześnie. Są one przetwarzane równolegle. Opcjonalnie 10
listPopFromBeginning Czy usunąć wpisy strumienia po uruchomieniu funkcji. Tak true

Konfigurowanie

W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json.

właściwość function.json opis Opcjonalnie Wartość domyślna
type Nazwa wyzwalacza. Nie.
listPopFromBeginning Czy usunąć wpisy strumienia po uruchomieniu funkcji. Ustaw wartość true. Tak true
connection Nazwa ustawienia aplikacji, które zawiera parametry połączenia pamięci podręcznej, takie jak:<cacheName>.redis.cache.windows.net:6380,password... Nie.
key To pole można rozpoznać przy użyciu polecenia INameResolver. Nie.
pollingIntervalInMs Jak często sondować usługę Redis w milisekundach. Tak 1000
messagesPerWorker Ile komunikatów każde wystąpienie funkcji ma przetwarzać. Służy do określania liczby wystąpień, do których ma być skalowana funkcja. Tak 100
count Liczba wpisów do odczytu z pamięci podręcznej jednocześnie. Wpisy są przetwarzane równolegle. Tak 10
name ? Tak
direction Ustaw wartość in. Nie.

Zobacz sekcję Przykład, aby zapoznać się z kompletnymi przykładami.

Użycie

Polecenie RedisListTrigger wyskakuje nowe elementy z listy i wyświetla te wpisy do funkcji. Wyzwalacz sonduje usługę Redis w konfigurowalnym stałym interwale i używa LPOP poleceń i RPOP do wyświetlania wpisów z list.

Type Opis
byte[] Komunikat z kanału.
string Komunikat z kanału.
Custom Wyzwalacz używa Json.NET serializacji do mapowania komunikatu z kanału z typu string niestandardowego.