Megosztás a következőn keresztül:


RedisStreamTrigger for Azure Functions

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

A függvényindítók rendelkezésre állásának hatóköre

Eseményindító típusa Azure által felügyelt Redis Azure Cache for Redis
Adatfolyamok Igen Igen

Fontos

Az Azure Managed Redis vagy az Azure Cache for Redis vállalati szintjeinek használatakor a 6380-6379-ös port helyett használja az 10000-s portot.

Fontos

A Redis-eseményindítók jelenleg nem támogatottak a használati terven vagy a Rugalmas kihasználtságú csomagon 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ó: Útmutató a C# Azure Functions izolált feldolgozói modellben való futtatásához.
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ó: C# osztálykódtárfüggvények fejlesztése az Azure Functions használatával.
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.