RedisStreamTrigger for Azure Functions (előzetes verzió)

A RedisStreamTrigger rendszer új bejegyzéseket olvas be egy streamből, és megjeleníti ezeket az elemeket a függvénynek.

Szint Alap Standard, Prémium Enterprise, Enterprise Flash
Adatfolyamok Igen Igen Igen

Fontos

A Redis-eseményindítók jelenleg nem támogatottak a Használat csomagban futó függvények esetében.

Fontos

A Functions Node.js v4-modelljét az Azure Cache for Redis bővítmény még nem támogatja. A v4-modell működésével kapcsolatos további információkért tekintse meg az Azure Functions Node.js fejlesztői útmutatóját. A v3 és a v4 közötti különbségekről a migrálási útmutatóban olvashat bővebben.

Fontos

A Functions Python v2-modelljét még nem támogatja az Azure Cache for Redis bővítmény. A v2-modell működésével kapcsolatos további részletekért tekintse meg az Azure Functions Python fejlesztői útmutatóját.

Példa

Fontos

A .NET-függvények esetében az izolált feldolgozói modell használata javasolt a folyamaton belüli modellen keresztül. A folyamaton belüli és az izolált feldolgozói modellek összehasonlításához tekintse meg az izolált feldolgozói modell és az Azure Functions .NET-hez készült folyamaton belüli modellje közötti különbségeket.

Végrehajtási modell Leírás
Izolált feldolgozói modell A függvénykód egy külön .NET-feldolgozófolyamatban fut. A .NET és a .NET-keretrendszer támogatott verzióival használható. További információ: .NET izolált feldolgozói folyamatfüggvények fejlesztése.
Folyamaton belüli modell A függvénykód ugyanabban a folyamatban fut, mint a Functions gazdafolyamata. Csak a .NET hosszú távú támogatási (LTS) verzióit támogatja. További információ: .NET-osztálykódtár-függvények fejlesztése.
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);
    }
}

Ez a minta ugyanazt index.js a fájlt használja, a kötési adatokkal együtt a function.json fájlban.

A fájl a index.js következő:

module.exports = async function (context, entry) {
    context.log(entry);
}

Innen function.jsonszármaznak a kötési adatok:

{
  "bindings": [
    {
      "type": "redisStreamTrigger",
      "connection": "redisConnectionString",
      "key": "streamTest",
      "pollingIntervalInMs": 1000,
      "maxBatchSize": 16,
      "name": "entry",
      "direction": "in"
    }
  ],
  "scriptFile": "index.js"
}

Ez a minta ugyanazt run.ps1 a fájlt használja, a kötési adatokkal együtt a function.json fájlban.

A fájl a run.ps1 következő:

param($entry, $TriggerMetadata)
Write-Host ($entry | ConvertTo-Json)

Innen function.jsonszármaznak a kötési adatok:

{
  "bindings": [
    {
      "type": "redisStreamTrigger",
      "connection": "redisConnectionString",
      "key": "streamTest",
      "pollingIntervalInMs": 1000,
      "maxBatchSize": 16,
      "name": "entry",
      "direction": "in"
    }
  ],
  "scriptFile": "run.ps1"
}

A Python v1 programozási modell megköveteli, hogy a függvénymappában egy külön function.json fájlban definiáljon kötéseket. További információt a Python fejlesztői útmutatójában talál.

Ez a minta ugyanazt __init__.py a fájlt használja, a kötési adatokkal együtt a function.json fájlban.

A fájl a __init__.py következő:

import logging

def main(entry: str):
    logging.info(entry)

Innen function.jsonszármaznak a kötési adatok:

{
  "bindings": [
    {
      "type": "redisStreamTrigger",
      "connection": "redisConnectionString",
      "key": "streamTest",
      "pollingIntervalInMs": 1000,
      "maxBatchSize": 16,
      "name": "entry",
      "direction": "in"
    }
  ],
  "scriptFile": "__init__.py"
}

Attribútumok

Paraméterek Leírás Kötelező Alapértelmezett
Connection A gyorsítótárat kapcsolati sztring tartalmazó alkalmazásbeállítás neve, például:<cacheName>.redis.cache.windows.net:6380,password... Igen
Key A kulcs, amelyből olvasni szeretne. Igen
PollingIntervalInMs Milyen gyakran lehet lekérdezni a Redis-kiszolgálót ezredmásodpercben. Választható 1000
MessagesPerWorker Az egyes függvények feldolgozóinak feldolgozandó üzenetek száma. Annak meghatározására szolgál, hogy a függvény hány feldolgozóra legyen skálázva. Választható 100
Count A Redisből egyszerre lekérendő elemek száma. Választható 10
DeleteAfterProcess Azt jelzi, hogy a függvény a feldolgozás után törli-e a streambejegyzéseket. Választható false

Jegyzetek

Paraméter Leírás Kötelező Alapértelmezett
name entry Igen
connection A gyorsítótárat kapcsolati sztring tartalmazó alkalmazásbeállítás neve, például:<cacheName>.redis.cache.windows.net:6380,password... Igen
key A kulcs, amelyből olvasni szeretne. Igen
pollingIntervalInMs A Redis lekérdezésének gyakorisága ezredmásodpercben. Választható 1000
messagesPerWorker Az egyes függvények feldolgozóinak feldolgozandó üzenetek száma. Azt határozza meg, hogy a függvény hány feldolgozóra legyen skálázva. Választható 100
count A Redisből egyszerre beolvasandó bejegyzések száma. A bejegyzések feldolgozása párhuzamosan történik. Választható 10
deleteAfterProcess Azt határozza meg, hogy törli-e a streambejegyzéseket a függvény futtatása után. Választható false

Konfiguráció

Az alábbi táblázat a function.json fájlban beállított kötéskonfigurációs tulajdonságokat ismerteti.

function.json tulajdonságai Leírás Kötelező Alapértelmezett
type Igen
deleteAfterProcess Választható false
connection A gyorsítótárat kapcsolati sztring tartalmazó alkalmazásbeállítás neve, például:<cacheName>.redis.cache.windows.net:6380,password... Igen
key A kulcs, amelyből olvasni szeretne. Igen
pollingIntervalInMs A Redis lekérdezésének gyakorisága ezredmásodpercben. Választható 1000
messagesPerWorker (nem kötelező) Az egyes függvények feldolgozóinak feldolgozandó üzenetek száma. Annak meghatározására szolgál, hogy a függvény hány feldolgozót skálázjon Választható 100
count A Redisből egyszerre beolvasandó bejegyzések száma. Ezek feldolgozása párhuzamosan történik. Választható 10
name Igen
direction Igen

A teljes példákért tekintse meg a Példa szakaszt.

Használat

Az RedisStreamTrigger Azure-függvény beolvassa az új bejegyzéseket egy streamből, és megjeleníti ezeket a bejegyzéseket a függvénynek.

Az eseményindító konfigurálható rögzített időközönként kérdezi le a Redist, és a stream elemeinek olvasására használható XREADGROUP .

A függvények összes példányának fogyasztói csoportja a függvény neve, SimpleStreamTrigger vagyis a StreamTrigger-minta neve.

Minden függvénypéldány egy véletlenszerű GUID azonosítót használ vagy WEBSITE_INSTANCE_ID generál a csoporton belüli fogyasztói névként annak érdekében, hogy a függvény kibővített példányai ne olvassák be ugyanazokat az üzeneteket a streamből.

Típus Leírás
byte[] A csatorna üzenete.
string A csatorna üzenete.
Custom Az eseményindító Json.NET szerializálással képezi le a csatorna üzenetét egy string egyéni típusba.