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 Node.js v4 pro Functions. Další podrobnosti o tom, jak model v4 funguje, najdete v příručce pro vývojáře služby Azure Functions Node.js. Další informace o rozdílech mezi v3 a v4 najdete v průvodci migrací.

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.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 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.