Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der RedisStreamTrigger liest neue Einträge aus einem Stream und überträgt diese Elemente an die Funktion.
Verfügbarkeitsbereich für Funktionstrigger
| Triggertyp | Azure Managed Redis | Azure Cache für Redis |
|---|---|---|
| Datenströme | 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 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 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.
| Ausführungsmodell | Beschreibung |
|---|---|
| Isoliertes Workermodell | Ihr Funktionscode wird in einem separaten .NET-Workerprozess ausgeführt. Verwenden Sie dazu unterstützte Versionen von .NET und .NET Framework. Weitere Informationen finden Sie im Handbuch zum Ausführen von C#-Azure-Funktionen im isolierten Arbeitsmodell. |
| In-Process-Modell | Ihr Funktionscode wird im gleichen Prozess wie der Functions-Hostprozess ausgeführt. Unterstützt nur LTS-Versionen (Long Term Support) von .NET. Weitere Informationen finden Sie unter Entwickeln von C#-Klassenbibliotheksfunktionen mithilfe von Azure Functions. |
using Microsoft.Extensions.Logging;
namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisStreamTrigger
{
internal class SimpleStreamTrigger
{
private readonly ILogger<SimpleStreamTrigger> logger;
public SimpleStreamTrigger(ILogger<SimpleStreamTrigger> logger)
{
this.logger = logger;
}
[Function(nameof(SimpleStreamTrigger))]
public void Run(
[RedisStreamTrigger(Common.connectionStringSetting, "streamKey")] string entry)
{
logger.LogInformation(entry);
}
}
}
package com.function.RedisStreamTrigger;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;
public class SimpleStreamTrigger {
@FunctionName("SimpleStreamTrigger")
public void run(
@RedisStreamTrigger(
name = "req",
connection = "redisConnectionString",
key = "streamTest",
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": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"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 | ConvertTo-Json)
Hier sind die Bindungsdaten von function.json:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
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.
Dieses Beispiel verwendet dieselbe __init__.py-Datei mit Bindung von Daten in der function.json-Datei.
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": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
Attribute
| Parameter | Beschreibung | 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. | Ja | |
PollingIntervalInMs |
Gibt in Millisekunden an, wie oft der Redis-Server abgefragt werden soll. | Wahlfrei | 1000 |
MessagesPerWorker |
Die Anzahl der Nachrichten, die jeder Functions-Worker verarbeiten soll. Wird verwendet, um zu bestimmen, auf wie viele Worker die Funktion skaliert werden soll. | Wahlfrei | 100 |
Count |
Die Anzahl der Elemente, die gleichzeitig von Redis abgerufen werden sollen. | Wahlfrei | 10 |
DeleteAfterProcess |
Gibt an, ob die Funktion die Streameinträge nach der Verarbeitung löscht. | Wahlfrei | false |
Anmerkungen
| Parameter | Beschreibung | Erforderlich | Standard |
|---|---|---|---|
name |
entry |
Ja | |
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. | Ja | |
pollingIntervalInMs |
Gibt in Millisekunden an, wie oft Redis abgefragt werden soll. | Wahlfrei | 1000 |
messagesPerWorker |
Die Anzahl der Nachrichten, die jeder Functions-Worker verarbeiten soll. Es wird verwendet, um zu bestimmen, wie viele Mitarbeiter die Funktion skalieren soll. | Wahlfrei | 100 |
count |
Anzahl der Einträge, die jeweils auf einmal von Redis gelesen werden sollen. Einträge werden parallel verarbeitet. | Wahlfrei | 10 |
deleteAfterProcess |
Gibt an, ob die Streameinträge nach dem Ausführen der Funktion gelöscht werden sollen. | Wahlfrei | false |
Konfiguration
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json festlegen.
| Eigenschaften in „function.json“ | Beschreibung | Erforderlich | Standard |
|---|---|---|---|
type |
Ja | ||
deleteAfterProcess |
Wahlfrei | false |
|
connection |
Der Name der Anwendungseinstellung, die den Cache Verbindungszeichenfolge enthält, z. B.:<cacheName>.redis.cache.windows.net:6380,password... |
Ja | |
key |
Der Schlüssel, aus dem gelesen werden soll. | Ja | |
pollingIntervalInMs |
Gibt in Millisekunden an, wie oft Redis abgefragt werden soll. | Wahlfrei | 1000 |
messagesPerWorker |
(Optional:) Die Anzahl der Nachrichten, die jeder Functions-Worker verarbeiten soll. Wird verwendet, um zu ermitteln, auf wie viele Worker die Funktion skaliert werden soll | Wahlfrei | 100 |
count |
Anzahl der Einträge, die jeweils auf einmal von Redis gelesen werden sollen. Diese werden parallel verarbeitet. | Wahlfrei | 10 |
name |
Ja | ||
direction |
Ja |
Vollständige Beispiele finden Sie im Abschnitt Beispiele.
Verbrauch
Die Azure-Funktion RedisStreamTrigger liest neue Einträge aus einem Stream und überträgt diese an die Funktion.
Der Trigger ruft Redis in einem konfigurierbaren festen Intervall ab und verwendet XREADGROUP, um Elemente aus dem Stream zu lesen.
Die Consumergruppe für alle Instanzen einer Funktion ist der Name der Funktion, d. h SimpleStreamTrigger . für das StreamTrigger-Beispiel.
Jede Funktionsinstanz verwendet oder WEBSITE_INSTANCE_ID generiert eine zufällige GUID, um als Consumernamen innerhalb der Gruppe zu verwenden, um sicherzustellen, dass skalierte Instanzen der Funktion nicht dieselben Nachrichten aus dem Datenstrom lesen.
| 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. |