RedisStreamTrigger för Azure Functions
Läser RedisStreamTrigger
nya poster från en ström och ytbehandlar dessa element till funktionen.
Omfång för tillgänglighet för funktionsutlösare
Utlösartyp | Azure Managed Redis | Azure Cache for Redis |
---|---|---|
Strömmar | Ja | Ja |
Viktigt!
När du använder Azure Managed Redis eller Enterprise-nivåerna i Azure Cache for Redis använder du port 10000 i stället för port 6380 eller 6379.
Viktigt!
Redis-utlösare stöds för närvarande inte för funktioner som körs i förbrukningsplanen.
Exempel
Viktigt!
För .NET-funktioner rekommenderas användning av den isolerade arbetsmodellen över den pågående modellen. En jämförelse av de processbaserade och isolerade arbetsmodellerna finns i skillnader mellan den isolerade arbetsmodellen och den processbaserade modellen för .NET på Azure Functions.
Körningsmodell | beskrivning |
---|---|
Isolerad arbetsmodell | Funktionskoden körs i en separat .NET-arbetsprocess. Använd med versioner av .NET och .NET Framework som stöds. Mer information finns i Utveckla .NET-isolerade arbetsprocessfunktioner. |
Processmodell | Funktionskoden körs i samma process som Functions-värdprocessen. Stöder endast LTS-versioner (Long Term Support) av .NET. Mer information finns i Utveckla .NET-klassbiblioteksfunktioner. |
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);
}
}
Det här exemplet använder samma index.js
fil med bindningsdata i function.json
filen.
Här är index.js
filen:
module.exports = async function (context, entry) {
context.log(entry);
}
Här är bindningsdata från function.json
:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "index.js"
}
Det här exemplet använder samma run.ps1
fil med bindningsdata i function.json
filen.
Här är run.ps1
filen:
param($entry, $TriggerMetadata)
Write-Host ($entry | ConvertTo-Json)
Här är bindningsdata från function.json
:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
Programmeringsmodellen Python v1 kräver att du definierar bindningar i en separat function.json fil i funktionsmappen. Mer information finns i utvecklarguiden för Python.
Det här exemplet använder samma __init__.py
fil med bindningsdata i function.json
filen.
Här är __init__.py
filen:
import logging
def main(entry: str):
logging.info(entry)
Här är bindningsdata från function.json
:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
Attribut
Kommentarer
Konfiguration
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i function.json-filen.
Se avsnittet Exempel för fullständiga exempel.
Förbrukning
RedisStreamTrigger
Azure-funktionen läser nya poster från en dataström och ytbehandlar dessa poster till funktionen.
Utlösaren avsöker Redis med ett konfigurerbart fast intervall och använder XREADGROUP
för att läsa element från strömmen.
Konsumentgruppen för alla instanser av en funktion är namnet på funktionen, dvs SimpleStreamTrigger
. för StreamTrigger-exemplet.
Varje funktionsinstans använder WEBSITE_INSTANCE_ID
eller genererar ett slumpmässigt GUID som ska användas som konsumentnamn i gruppen för att säkerställa att utskalade instanser av funktionen inte läser samma meddelanden från strömmen.
Typ | Beskrivning |
---|---|
byte[] |
Meddelandet från kanalen. |
string |
Meddelandet från kanalen. |
Custom |
Utlösaren använder Json.NET serialisering för att mappa meddelandet från kanalen från en string till en anpassad typ. |