RedisStreamTrigger voor Azure Functions
De RedisStreamTrigger
nieuwe vermeldingen uit een stroom worden gelezen en deze elementen naar de functie weergegeven.
Laag | Basis | Standaard, Premium | Enterprise, Enterprise Flash |
---|---|---|---|
Stromen | Ja | Ja | Ja |
Belangrijk
Redis-triggers worden momenteel niet ondersteund voor functies die worden uitgevoerd in het verbruiksabonnement.
Belangrijk
Het Node.js v4-model voor Functions wordt nog niet ondersteund door de extensie Azure Cache voor Redis. Raadpleeg de ontwikkelaarshandleiding voor Azure Functions Node.js voor meer informatie over hoe het v4-model werkt. Raadpleeg de migratiehandleiding voor meer informatie over de verschillen tussen v3 en v4.
Belangrijk
Het Python v2-model voor Functions wordt nog niet ondersteund door de Azure Cache voor Redis-extensie. Raadpleeg de Ontwikkelaarshandleiding voor Azure Functions Python voor meer informatie over hoe het v2-model werkt.
Opmerking
Belangrijk
Voor .NET-functies wordt het gebruik van het geïsoleerde werkrolmodel aanbevolen via het procesmodel. Zie de verschillen tussen het geïsoleerde werkrolmodel en het in-procesmodel voor .NET in Azure Functions voor een vergelijking van de in-proces- en geïsoleerde werkrolmodellen.
Uitvoeringsmodel | Beschrijving |
---|---|
Geïsoleerde werkrolmodel | Uw functiecode wordt uitgevoerd in een afzonderlijk .NET-werkproces. Gebruiken met ondersteunde versies van .NET en .NET Framework. Zie .NET geïsoleerde werkprocesfuncties ontwikkelen voor meer informatie. |
Model in proces | Uw functiecode wordt uitgevoerd in hetzelfde proces als het Functions-hostproces. Ondersteunt alleen LTS-versies (Long Term Support) van .NET. Zie .NET-klassebibliotheekfuncties ontwikkelen voor meer informatie. |
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);
}
}
In dit voorbeeld wordt hetzelfde index.js
bestand gebruikt, met bindingsgegevens in het function.json
bestand.
Dit is het index.js
bestand:
module.exports = async function (context, entry) {
context.log(entry);
}
Hier function.json
ziet u de bindingsgegevens:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "index.js"
}
In dit voorbeeld wordt hetzelfde run.ps1
bestand gebruikt, met bindingsgegevens in het function.json
bestand.
Dit is het run.ps1
bestand:
param($entry, $TriggerMetadata)
Write-Host ($entry | ConvertTo-Json)
Hier function.json
ziet u de bindingsgegevens:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
Voor het Python v1-programmeermodel moet u bindingen definiëren in een afzonderlijk function.json bestand in de functiemap. Zie de Ontwikkelaarshandleiding voor Python voor meer informatie.
In dit voorbeeld wordt hetzelfde __init__.py
bestand gebruikt, met bindingsgegevens in het function.json
bestand.
Dit is het __init__.py
bestand:
import logging
def main(entry: str):
logging.info(entry)
Hier function.json
ziet u de bindingsgegevens:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
Kenmerken
Parameters | Beschrijving | Vereist | Standaardinstelling |
---|---|---|---|
Connection |
De naam van de toepassingsinstelling die de cache-verbindingsreeks bevat, zoals:<cacheName>.redis.cache.windows.net:6380,password... |
Ja | |
Key |
Sleutel waaruit u wilt lezen. | Ja | |
PollingIntervalInMs |
Hoe vaak de Redis-server in milliseconden moet worden gepeild. | Optioneel | 1000 |
MessagesPerWorker |
Het aantal berichten dat elke functiewerkrol moet verwerken. Wordt gebruikt om te bepalen hoeveel werkrollen de functie moet schalen. | Optioneel | 100 |
Count |
Het aantal elementen dat moet worden opgehaald uit Redis tegelijk. | Optioneel | 10 |
DeleteAfterProcess |
Geeft aan of de functie de streamvermeldingen verwijdert na verwerking. | Optioneel | false |
Aantekeningen
Parameter | Omschrijving | Vereist | Default |
---|---|---|---|
name |
entry |
Ja | |
connection |
De naam van de toepassingsinstelling die de cache-verbindingsreeks bevat, zoals:<cacheName>.redis.cache.windows.net:6380,password... |
Ja | |
key |
Sleutel waaruit u wilt lezen. | Ja | |
pollingIntervalInMs |
Hoe vaak Redis moet worden gepeild, in milliseconden. | Optioneel | 1000 |
messagesPerWorker |
Het aantal berichten dat elke functiewerkrol moet verwerken. Het wordt gebruikt om te bepalen naar hoeveel werkrollen de functie moet worden geschaald. | Optioneel | 100 |
count |
Aantal vermeldingen dat in Redis tegelijk moet worden gelezen. Vermeldingen worden parallel verwerkt. | Optioneel | 10 |
deleteAfterProcess |
Of de streamvermeldingen moeten worden verwijderd nadat de functie is uitgevoerd. | Optioneel | false |
Configuratie
In de volgende tabel worden de bindingsconfiguratie-eigenschappen uitgelegd die u in het function.json-bestand hebt ingesteld.
function.json eigenschappen | Beschrijving | Vereist | Default |
---|---|---|---|
type |
Ja | ||
deleteAfterProcess |
Optioneel | false |
|
connection |
De naam van de toepassingsinstelling die de cache-verbindingsreeks bevat, zoals:<cacheName>.redis.cache.windows.net:6380,password... |
Ja | |
key |
De sleutel waaruit moet worden gelezen. | Ja | |
pollingIntervalInMs |
Hoe vaak Redis in milliseconden moet worden gepeild. | Optioneel | 1000 |
messagesPerWorker |
(optioneel) Het aantal berichten dat elke functiewerkrol moet verwerken. Wordt gebruikt om te bepalen hoeveel werkrollen de functie moet schalen | Optioneel | 100 |
count |
Aantal vermeldingen dat in Redis tegelijk moet worden gelezen. Deze worden parallel verwerkt. | Optioneel | 10 |
name |
Ja | ||
direction |
Ja |
Zie de sectie Voorbeeld voor volledige voorbeelden.
Gebruik
De RedisStreamTrigger
Azure-functie leest nieuwe vermeldingen uit een stroom en geeft deze vermeldingen weer in de functie.
De trigger pollt Redis met een configureerbaar vast interval en gebruikt XREADGROUP
om elementen uit de stream te lezen.
De consumentengroep voor alle exemplaren van een functie is de naam van de functie, SimpleStreamTrigger
dus voor het StreamTrigger-voorbeeld.
Elk exemplaar van een functie gebruikt de WEBSITE_INSTANCE_ID
willekeurige GUID die als consumentennaam in de groep moet worden gebruikt om ervoor te zorgen dat uitgeschaalde exemplaren van de functie niet dezelfde berichten uit de stream lezen.
Type | Description |
---|---|
byte[] |
Het bericht van het kanaal. |
string |
Het bericht van het kanaal. |
Custom |
De trigger maakt gebruik van Json.NET serialisatie om het bericht van het kanaal van een string in een aangepast type toe te wijzen. |