Share via


RedisStreamTrigger för Azure Functions (förhandsversion)

Läser RedisStreamTrigger nya poster från en ström och ytbehandlar dessa element till funktionen.

Nivå Grundläggande Standard, Premium Enterprise, Enterprise Flash
Strömmar Ja Ja Ja

Viktigt!

Redis-utlösare stöds för närvarande inte för funktioner som körs i förbrukningsplanen.

Viktigt!

Node.js v4-modellen för Functions stöds ännu inte av Azure Cache for Redis-tillägget. Mer information om hur v4-modellen fungerar finns i utvecklarguiden för Azure Functions Node.js. Mer information om skillnaderna mellan v3 och v4 finns i migreringsguiden.

Viktigt!

Python v2-modellen för Functions stöds ännu inte av Azure Cache for Redis-tillägget. Mer information om hur v2-modellen fungerar finns i utvecklarhandboken för Azure Functions Python.

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

Parametrar beskrivning Obligatoriskt Standardvärde
Connection Namnet på programinställningen som innehåller cacheminnet anslutningssträng, till exempel:<cacheName>.redis.cache.windows.net:6380,password... Ja
Key Nyckel att läsa från. Ja
PollingIntervalInMs Hur ofta Redis-servern ska avsökas i millisekunder. Valfritt 1000
MessagesPerWorker Antalet meddelanden som varje funktionsarbetare ska bearbeta. Används för att avgöra hur många arbetare funktionen ska skalas till. Valfritt 100
Count Antal element som ska hämtas från Redis samtidigt. Valfritt 10
DeleteAfterProcess Anger om funktionen tar bort dataströmposterna efter bearbetningen. Valfritt false

Kommentarer

Parameter Beskrivning Obligatoriskt Standardvärde
name entry Ja
connection Namnet på programinställningen som innehåller cacheminnet anslutningssträng, till exempel:<cacheName>.redis.cache.windows.net:6380,password... Ja
key Nyckel att läsa från. Ja
pollingIntervalInMs Hur ofta redis ska avsökas, i millisekunder. Valfritt 1000
messagesPerWorker Antalet meddelanden som varje funktionsarbetare ska bearbeta. Den används för att avgöra hur många arbetare funktionen ska skalas till. Valfritt 100
count Antal poster som ska läsas från Redis samtidigt. Poster bearbetas parallellt. Valfritt 10
deleteAfterProcess Om du vill ta bort dataströmposterna när funktionen har körts. Valfritt false

Konfiguration

I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i function.json-filen.

function.json egenskaper beskrivning Obligatoriskt Standardvärde
type Ja
deleteAfterProcess Valfritt false
connection Namnet på programinställningen som innehåller cacheminnet anslutningssträng, till exempel:<cacheName>.redis.cache.windows.net:6380,password... Ja
key Nyckeln att läsa från. Ja
pollingIntervalInMs Hur ofta redis ska avsökas i millisekunder. Valfritt 1000
messagesPerWorker (valfritt) Antalet meddelanden som varje funktionsarbetare ska bearbeta. Används för att avgöra hur många arbetare funktionen ska skala Valfritt 100
count Antal poster som ska läsas från Redis samtidigt. Dessa bearbetas parallellt. Valfritt 10
name Ja
direction Ja

Se avsnittet Exempel för fullständiga exempel.

Användning

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.