Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Přečte RedisStreamTrigger nové položky z datového proudu a zobrazí tyto prvky do funkce.
Rozsah dostupnosti pro triggery funkcí
| Typ triggeru | Azure Spravovaný Redis | Azure Cache for Redis |
|---|---|---|
| Streamy | Ano | Ano |
Důležité
Pokud používáte Azure Managed Redis nebo podnikové úrovně Azure Cache for Redis, použijte místo portu 6380 nebo 6379 port 10000.
Důležité
Triggery Redis se v současné době nepodporují u funkcí běžících v plánu Consumption ani v plánu Flex 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 Příručce pro spouštění funkcí Azure Functions jazyka C# v izolovaném pracovním modelu. |
| 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 jazyka C# pomocí 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);
}
}
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.jsonjsou 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.jsonjsou 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.jsonjsou 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 |
Ano |
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. |