Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcja RedisStreamTrigger odczytuje nowe wpisy ze strumienia i wyświetla te elementy do funkcji.
Zakres dostępności wyzwalaczy funkcji
| Typ wyzwalacza | Zarządzany Redis w Azure | 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 ani w planie Flex Consumption.
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 przewodnik dotyczący uruchamiania usługi Azure Functions w języku C# w izolowanym modelu procesu roboczego. |
| 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 języka C# przy użyciu usługi 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);
}
}
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.jsonpliku 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.jsonpliku 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.jsonpliku 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.
| Typ | 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. |