Freigeben über


RedisListTrigger für Azure-Funktionen

Der RedisListTrigger entfernt neue Elemente per Pop aus einer Liste und überträgt diese Einträge an die Funktion.

Weitere Informationen zu Azure Cache für Redis-Trigger und -Bindungen, Redis-Erweiterung für Azure-Funktionen.

Verfügbarkeitsbereich für Funktionstrigger

Tarif Standard Standard, Premium Enterprise, Enterprise Flash
Listen Ja Ja Ja

Wichtig

Redis-Trigger werden derzeit für Funktionen, die im Verbrauchsplan ausgeführt werden, nicht unterstützt.

Wichtig

Das Node.js v4-Modell für Funktionen wird von der Azure Cache for Redis-Erweiterung noch nicht unterstützt. Weitere Informationen zur Funktionsweise des v4-Modells finden Sie im Azure Functions Node.js-Entwicklerhandbuch. Weitere Informationen zu den Unterschieden zwischen v3 und v4 finden Sie im Migrationshandbuch.

Wichtig

Das Python v2-Modell für Funktionen wird von der Azure Cache for Redis-Erweiterung noch nicht unterstützt. Weitere Informationen zur Funktionsweise des v2-Modells finden Sie im Azure Functions Python-Entwicklerhandbuch.

Beispiel

Wichtig

Für .NET-Funktionen wird die Verwendung des isolierten Workermodells gegenüber dem In-Process-Modell empfohlen. Einen Vergleich der In-Process - und isolierten Workermodelle finden Sie unter den Unterschieden zwischen dem isolierten Workermodell und dem Prozessmodell für .NET in Azure Functions.

Im folgenden Beispiel wird der Schlüssel abgerufen 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);
        }
    }
}

Im folgenden Beispiel wird der Schlüssel listTest in einer Localhost Redis-Instanz unter redisLocalhost abgerufen:

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);
    }
}

Dieses Beispiel verwendet dieselbe index.js-Datei mit Bindung von Daten in der function.json-Datei.

Hier sehen Sie die index.js-Datei:

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

Hier sind die Bindungsdaten von function.json:

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

Dieses Beispiel verwendet dieselbe run.ps1-Datei mit Bindung von Daten in der function.json-Datei.

Hier sehen Sie die run.ps1-Datei:

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

Hier sind die Bindungsdaten von function.json:

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

Dieses Beispiel verwendet dieselbe __init__.py-Datei mit Bindung von Daten in der function.json-Datei.

Für das Python v1-Programmiermodell müssen Sie Bindungen in einer separaten function.json-Datei im Funktionsordner definieren. Weitere Informationen finden Sie im Python Developer-Leitfaden.

Hier sehen Sie die __init__.py-Datei:

import logging

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

Hier sind die Bindungsdaten von function.json:

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

Attribute

Parameter Beschreibung des Dataflows Erforderlich Standard
Connection Der Name der Anwendungseinstellung, die den Cache Verbindungszeichenfolge enthält, z. B.:<cacheName>.redis.cache.windows.net:6380,password... Ja
Key Schlüssel, aus dem gelesen werden soll. Dieses Feld kann mithilfe von INameResolver aufgelöst werden. Ja
PollingIntervalInMs Gibt in Millisekunden an, wie oft Redis abgefragt werden soll. Optional 1000
MessagesPerWorker Gibt an, wie viele Nachrichten jede Funktionsinstanz verarbeiten soll. Wird verwendet, um zu ermitteln, auf wie viele Instanzen die Funktion skaliert werden soll. Optional 100
Count Anzahl der Einträge, die jeweils auf einmal von Redis per Pop entfernt werden sollen. Einträge werden parallel verarbeitet. Wird nur unter Redis 6.2+ mit dem COUNT-Argument in LPOP und RPOP unterstützt. Optional 10
ListPopFromBeginning Legt fest, ob Einträge vom Anfang mithilfe von LPOP oder vom Ende mithilfe von RPOP per Pop entfernt werden sollen. Optional true

Anmerkungen

Parameter Beschreibung des Dataflows Erforderlich Standard
name „Eintrag“
connection Der Name der Anwendungseinstellung, die den Cache Verbindungszeichenfolge enthält, z. B.:<cacheName>.redis.cache.windows.net:6380,password... Ja
key Dieses Feld kann mithilfe von INameResolver aufgelöst werden. Ja
pollingIntervalInMs Gibt in Millisekunden an, wie oft Redis abgefragt werden soll. Optional 1000
messagesPerWorker Gibt an, wie viele Nachrichten jede Funktionsinstanz verarbeiten soll. Wird verwendet, um zu ermitteln, auf wie viele Instanzen die Funktion skaliert werden soll. Optional 100
count Anzahl der Einträge, die jeweils auf einmal von Redis gelesen werden sollen. Diese werden parallel verarbeitet. Optional 10
listPopFromBeginning Gibt an, ob die Streameinträge nach dem Ausführen der Funktion gelöscht werden sollen. Ja true

Konfiguration

Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json festlegen.

Eigenschaft „function.json“ Beschreibung Optional Standard
type Name des Triggers. No
listPopFromBeginning Gibt an, ob die Streameinträge nach dem Ausführen der Funktion gelöscht werden sollen. Auf true festlegen. Ja true
connection Der Name der Anwendungseinstellung, die den Cache Verbindungszeichenfolge enthält, z. B.:<cacheName>.redis.cache.windows.net:6380,password... No
key Dieses Feld kann mithilfe von INameResolver aufgelöst werden. No
pollingIntervalInMs Gibt in Millisekunden an, wie oft Redis abgefragt werden soll. Ja 1000
messagesPerWorker Gibt an, wie viele Nachrichten jede Funktionsinstanz verarbeiten soll. Wird verwendet, um zu ermitteln, auf wie viele Instanzen die Funktion skaliert werden soll. Ja 100
count Anzahl der Einträge, die jeweils auf einmal aus dem Cache gelesen werden sollen. Einträge werden parallel verarbeitet. Ja 10
name ? Ja
direction Auf in festlegen. No

Vollständige Beispiele finden Sie im Abschnitt Beispiele.

Verbrauch

Der RedisListTrigger entfernt neue Elemente per Pop aus einer Liste und überträgt diese Einträge an die Funktion. Der Trigger ruft Redis in einem konfigurierbaren festen Intervall ab und verwendet LPOP und RPOP, um Einträge per Pop aus den Listen zu entfernen.

Typ Beschreibung
byte[] Die Nachricht aus dem Kanal
string Die Nachricht aus dem Kanal
Custom Der Trigger verwendet die Json.NET-Serialisierung, um die Nachricht aus dem Kanal (zunächst ein string-Typ) einem benutzerdefinierten Typ zuzuordnen.