RedisStreamTrigger pro Azure Functions
Přečte RedisStreamTrigger
nové položky z datového proudu a zobrazí tyto prvky do funkce.
Úroveň | Basic | Standard, Premium | Enterprise, Enterprise Flash |
---|---|---|---|
Streamy | Ano | Ano | Yes |
Důležité
Triggery Redis se v současné době nepodporují pro funkce spuštěné v plánu Consumption.
Důležité
Rozšíření Azure Cache for Redis zatím nepodporuje model Pythonu v2 pro Functions. Další podrobnosti o tom, jak model v2 funguje, najdete v příručce pro vývojáře v Pythonu pro Azure Functions.
Příklad
Důležité
Pro funkce .NET se doporučuje použití izolovaného modelu pracovního procesu přes model v procesu. Porovnání modelů pracovních procesů v procesu a izolovaných pracovních procesů najdete v rozdílech mezi izolovaným modelem pracovního procesu a modelem v procesu pro .NET ve službě Azure Functions.
Model spouštění | Popis |
---|---|
Izolovaný model pracovního procesu | Kód funkce se spouští v samostatném pracovním procesu .NET. Používá se s podporovanými verzemi rozhraní .NET a .NET Framework. Další informace najdete v tématu Vývoj funkcí izolovaného pracovního procesu .NET. |
Model v procesu | Kód funkce se spouští ve stejném procesu jako hostitelský proces služby Functions. Podporuje pouze verze dlouhodobé podpory (LTS) rozhraní .NET. Další informace najdete v tématu Vývoj funkcí knihovny tříd .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);
}
}
Tato ukázka používá stejný index.js
soubor s daty vazby function.json
v souboru.
Tady je index.js
soubor:
module.exports = async function (context, entry) {
context.log(entry);
}
Tady function.json
jsou data vazby:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "index.js"
}
Tato ukázka používá stejný run.ps1
soubor s daty vazby function.json
v souboru.
Tady je run.ps1
soubor:
param($entry, $TriggerMetadata)
Write-Host ($entry | ConvertTo-Json)
Tady function.json
jsou data vazby:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
Programovací model Pythonu v1 vyžaduje, abyste definovali vazby v samostatném souboru function.json ve složce funkce. Další informace najdete v příručce pro vývojáře Pythonu.
Tato ukázka používá stejný __init__.py
soubor s daty vazby function.json
v souboru.
Tady je __init__.py
soubor:
import logging
def main(entry: str):
logging.info(entry)
Tady function.json
jsou data vazby:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
Atributy
Parametry | Popis | Požaduje se | Výchozí |
---|---|---|---|
Connection |
Název nastavení aplikace, které obsahuje připojovací řetězec mezipaměti, například:<cacheName>.redis.cache.windows.net:6380,password... |
Ano | |
Key |
Klíč pro čtení. | Ano | |
PollingIntervalInMs |
Jak často se má server Redis dotazovat v milisekundách. | Volitelné | 1000 |
MessagesPerWorker |
Počet zpráv, které má každý pracovní proces funkcí zpracovat. Používá se k určení počtu pracovních procesů, na které se má funkce škálovat. | Volitelné | 100 |
Count |
Počet prvků, které se mají najednou stáhnout z Redisu | Volitelné | 10 |
DeleteAfterProcess |
Určuje, jestli funkce po zpracování odstraní položky datového proudu. | Volitelné | false |
Poznámky
Parametr | Popis | Požaduje se | Výchozí |
---|---|---|---|
name |
entry |
Ano | |
connection |
Název nastavení aplikace, které obsahuje připojovací řetězec mezipaměti, například:<cacheName>.redis.cache.windows.net:6380,password... |
Ano | |
key |
Klíč pro čtení. | Ano | |
pollingIntervalInMs |
Jak často dotazovat Redis v milisekundách | Volitelné | 1000 |
messagesPerWorker |
Počet zpráv, které má každý pracovní proces funkcí zpracovat. Používá se k určení počtu pracovních procesů, na které se má funkce škálovat. | Volitelné | 100 |
count |
Počet položek, které se mají číst z Redis najednou Položky se zpracovávají paralelně. | Volitelné | 10 |
deleteAfterProcess |
Zda se mají položky streamu odstranit po spuštění funkce. | Volitelné | false |
Konfigurace
Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v souboru function.json.
vlastnosti function.json | Popis | Požaduje se | Výchozí |
---|---|---|---|
type |
Ano | ||
deleteAfterProcess |
Volitelné | false |
|
connection |
Název nastavení aplikace, které obsahuje připojovací řetězec mezipaměti, například:<cacheName>.redis.cache.windows.net:6380,password... |
Ano | |
key |
Klíč, ze který se má číst. | Ano | |
pollingIntervalInMs |
Jak často dotazovat Redis v milisekundách | Volitelné | 1000 |
messagesPerWorker |
(volitelné) Počet zpráv, které má každý pracovní proces funkcí zpracovat. Používá se k určení počtu pracovních procesů, které má funkce škálovat. | Volitelné | 100 |
count |
Počet položek, které se mají číst z Redis najednou Ty se zpracovávají paralelně. | Volitelné | 10 |
name |
Ano | ||
direction |
Yes |
Kompletní příklady najdete v části Příklad.
Využití
Funkce RedisStreamTrigger
Azure Functions čte nové položky z datového proudu a zobrazí tyto položky do funkce.
Trigger se dotazuje Redis v konfigurovatelném pevném intervalu a používá XREADGROUP
ke čtení prvků z datového proudu.
Skupina příjemců pro všechny instance funkce je název funkce, SimpleStreamTrigger
tj. pro ukázku StreamTriggeru.
Každá instance funkcí používá WEBSITE_INSTANCE_ID
nebo vygeneruje náhodný identifikátor GUID, který se použije jako název příjemce ve skupině, aby se zajistilo, že instance funkce se škálováním na více instancí nečtou stejné zprávy ze streamu.
Typ | Popis |
---|---|
byte[] |
Zpráva z kanálu. |
string |
Zpráva z kanálu. |
Custom |
Trigger používá Json.NET serializace k mapování zprávy z kanálu z kanálu string do vlastního typu. |