RedisStreamTrigger dla usługi Azure Functions
Funkcja RedisStreamTrigger
odczytuje nowe wpisy ze strumienia i wyświetla te elementy do funkcji.
Zakres dostępności wyzwalaczy funkcji
Typ wyzwalacza | Azure Managed Redis | Azure Cache for Redis |
---|---|---|
Strumienie | Tak | Tak |
Ważne
W przypadku korzystania z usługi Azure Managed Redis lub warstw Enterprise usługi Azure Cache for Redis użyj portu 10000, a nie portu 6380 lub 6379.
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.
Model wykonania | opis |
---|---|
Model izolowanego procesu roboczego | Kod funkcji jest uruchamiany w osobnym procesie roboczym platformy .NET. Używaj z obsługiwanymi wersjami platform .NET i .NET Framework. Aby dowiedzieć się więcej, zobacz Develop .NET isolated worker process functions (Tworzenie izolowanych funkcji procesów roboczych platformy .NET). |
Model w procesie | Kod funkcji jest uruchamiany w tym samym procesie co proces hosta usługi Functions. Obsługuje tylko wersje long term support (LTS) platformy .NET. Aby dowiedzieć się więcej, zobacz Tworzenie funkcji biblioteki klas platformy .NET. |
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);
}
}
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.json
pliku oto dane powiązania:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"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 | ConvertTo-Json)
W function.json
pliku oto dane powiązania:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
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.
W tym przykładzie użyto tego samego __init__.py
pliku z danymi powiązania w function.json
pliku.
__init__.py
Oto plik:
import logging
def main(entry: str):
logging.info(entry)
W function.json
pliku oto dane powiązania:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
Atrybuty
Parametry | 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. | Tak | |
PollingIntervalInMs |
Jak często sondować serwer Redis w milisekundach. | Opcjonalnie | 1000 |
MessagesPerWorker |
Liczba komunikatów, które powinien przetwarzać każdy proces roboczy funkcji. Służy do określania liczby procesów roboczych, do których ma być skalowana funkcja. | Opcjonalnie | 100 |
Count |
Liczba elementów do pobrania z usługi Redis jednocześnie. | Opcjonalnie | 10 |
DeleteAfterProcess |
Wskazuje, czy funkcja usuwa wpisy strumienia po przetworzeniu. | Opcjonalnie | false |
Adnotacje
Parametr | opis | Wymagani | Wartość domyślna |
---|---|---|---|
name |
entry |
Tak | |
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. | Tak | |
pollingIntervalInMs |
Jak często sondować usługę Redis w milisekundach. | Opcjonalnie | 1000 |
messagesPerWorker |
Liczba komunikatów, które powinien przetwarzać każdy proces roboczy funkcji. Służy do określania liczby procesów roboczych, do których ma być skalowana funkcja. | Opcjonalnie | 100 |
count |
Liczba wpisów do odczytu z usługi Redis jednocześnie. Wpisy są przetwarzane równolegle. | Opcjonalnie | 10 |
deleteAfterProcess |
Czy usunąć wpisy strumienia po uruchomieniu funkcji. | Opcjonalnie | false |
Konfigurowanie
W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json.
właściwości function.json | opis | Wymagani | Wartość domyślna |
---|---|---|---|
type |
Tak | ||
deleteAfterProcess |
Opcjonalnie | false |
|
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 odczytania. | Tak | |
pollingIntervalInMs |
Jak często sondować usługę Redis w milisekundach. | Opcjonalnie | 1000 |
messagesPerWorker |
(opcjonalnie) Liczba komunikatów, które powinien przetwarzać każdy proces roboczy funkcji. Służy do określania liczby procesów roboczych, które mają być skalowane | Opcjonalnie | 100 |
count |
Liczba wpisów do odczytu z usługi Redis jednocześnie. Są one przetwarzane równolegle. | Opcjonalnie | 10 |
name |
Tak | ||
direction |
Tak |
Zobacz sekcję Przykład, aby zapoznać się z kompletnymi przykładami.
Użycie
Funkcja RedisStreamTrigger
platformy Azure odczytuje nowe wpisy ze strumienia i wyświetla te wpisy do funkcji.
Wyzwalacz sonduje usługę Redis w konfigurowalnym stałym interwale i używa XREADGROUP
ich do odczytywania elementów ze strumienia.
Grupa odbiorców dla wszystkich wystąpień funkcji jest nazwą funkcji, SimpleStreamTrigger
czyli dla przykładu StreamTrigger.
Każde wystąpienie funkcji używa identyfikatora WEBSITE_INSTANCE_ID
GUID lub generuje losowy identyfikator GUID do użycia jako nazwa odbiorcy w grupie w celu zapewnienia, że skalowane w poziomie wystąpienia funkcji nie odczytują tych samych komunikatów ze strumienia.
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. |