Freigeben über


RedisListTrigger für Azure Functions

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

Weitere Informationen zu Azure Verwalteten Redis-Triggern und -Bindungen Redis-Erweiterung für Azure Functions.

Verfügbarkeitsbereich für Funktionstrigger

Triggertyp Azure Verwaltete Redis Azure Cache for Redis
Listen Ja Ja

Wichtig

Verwenden Sie port 10000 anstelle von Port 6380 oder 6379, wenn Sie Azure verwaltete Redis oder enterprise-Ebenen von Azure Cache for Redis verwenden.

Wichtig

Redis-Trigger werden derzeit nicht für Funktionen unterstützt, die in einem Verbrauchsplan oder einem Flex-Verbrauch-Plan ausgeführt werden.

Wichtig

Das Node.js v4-Modell für Funktionen wird von der erweiterung Azure Cache for Redis noch nicht unterstützt. Weitere Informationen zur Funktionsweise des v4-Modells finden Sie im Entwicklerhandbuch Azure Functions Node.js. 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 Entwicklerhandbuch Azure Functions Python.

Beispiel

Wichtig

Für .NET Funktionen wird die Verwendung des isolierten Workersmodells über das modell in-process empfohlen. Vergleich der Modelle in-process und isolierter Worker unterschiede zwischen dem isolierten Workermodell und dem in-processmodell für .NET 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 Datei index.js:

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 Datei run.ps1:

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.

Das Python v1-Programmiermodell erfordert, dass Sie Bindungen in einer separaten function.jsondatei im Funktionsordner definieren. Weitere Informationen finden Sie im Entwicklerhandbuch Python.

Hier sehen Sie die Datei __init__.py:

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 Erforderlich Standard
Connection Der Name der Einstellung application, die den Cache-connection string 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 Erforderlich Standard
name „Eintrag“
connection Der Name der Einstellung application, die den Cache-connection string 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 Einstellung application, die den Cache-connection string 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 Auslöser verwendet json.NET Serialisierung, um die Nachricht aus dem Kanal aus einem string einem benutzerdefinierten Typ zuzuordnen.