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
Triggertyp | Azure Managed Redis | Azure Cache for Redis |
---|---|---|
Listen | Ja | Ja |
Wichtig
Wenn Sie Azure Managed Redis oder die Enterprise-Ebenen von Azure Cache für Redis verwenden, verwenden Sie Port 10000 anstelle von Port 6380 oder 6379.
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. |