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


RedisListTrigger for Azure Functions

A RedisListTrigger rendszer új elemeket jelenít meg egy listából, és megjeleníti ezeket a bejegyzéseket a függvényben.

Az Azure Cache for Redis eseményindítóiról és kötéseiről az Azure Functions Redis-bővítménye nyújt további információt.

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

Szint Alap Standard, Prémium Enterprise, Enterprise Flash
Listák 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.

A következő minta lekérdezi a kulcsot listTest.:

using Microsoft.Extensions.Logging;

namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisListTrigger
{
    public class SimpleListTrigger
    {
        private readonly ILogger<SimpleListTrigger> logger;

        public SimpleListTrigger(ILogger<SimpleListTrigger> logger)
        {
            this.logger = logger;
        }

        [Function(nameof(SimpleListTrigger))]
        public void Run(
            [RedisListTrigger(Common.connectionStringSetting, "listTest")] string entry)
        {
            logger.LogInformation(entry);
        }
    }
}

Az alábbi minta egy localhost Redis-példány kulcsát listTest kérdezi le a következő helyen redisLocalhost:

package com.function.RedisListTrigger;

import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;

public class SimpleListTrigger {
    @FunctionName("SimpleListTrigger")
    public void run(
            @RedisListTrigger(
                name = "req",
                connection = "redisConnectionString",
                key = "listTest",
                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": "redisListTrigger",
            "listPopFromBeginning": true,
            "connection": "redisConnectionString",
            "key": "listTest",
            "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

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

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

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

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.

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": "redisListTrigger",
            "listPopFromBeginning": true,
            "connection": "redisConnectionString",
            "key": "listTest",
            "pollingIntervalInMs": 1000,
            "maxBatchSize": 16,
            "name": "entry",
            "direction": "in"
        }
      ],
    "scriptFile": "__init__.py"
}

Attribútumok

Paraméter 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. Ez a mező a következővel INameResolveroldható fel: . Igen
PollingIntervalInMs A Redis lekérdezésének gyakorisága ezredmásodpercben. Választható 1000
MessagesPerWorker Hány üzenetet kell feldolgoznia az egyes függvénypéldányok számára. Annak meghatározására szolgál, hogy a függvény hány példányra legyen skálázva. Választható 100
Count A Redisből egyszerre előugró bejegyzések száma. A bejegyzések feldolgozása párhuzamosan történik. Csak a Redis 6.2+-ban támogatott az argumentum LPOP RPOPés a COUNT . Választható 10
ListPopFromBeginning Azt határozza meg, hogy az elejétől LPOPkezdve a kezdő vagy a végből RPOPszármazó előugró bejegyzéseket használja-e. Választható true

Jegyzetek

Paraméter Leírás Kötelező Alapértelmezett
name "bejegyzés"
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 Ez a mező az INameResolver használatával oldható fel. Igen
pollingIntervalInMs A Redis lekérdezésének gyakorisága ezredmásodpercben. Választható 1000
messagesPerWorker Hány üzenetet kell feldolgoznia az egyes függvénypéldányok számára. Annak meghatározására szolgál, hogy a függvény hány példányra legyen skálázva. Választható 100
count A Redisből egyszerre beolvasandó bejegyzések száma. Ezek feldolgozása párhuzamosan történik. Választható 10
listPopFromBeginning Azt határozza meg, hogy törli-e a streambejegyzéseket a függvény futtatása után. Igen true

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ág Leírás Lehetséges Alapértelmezett
type Az eseményindító neve. Nem
listPopFromBeginning Azt határozza meg, hogy törli-e a streambejegyzéseket a függvény futtatása után. Állítsa true értékre. Igen true
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... Nem
key Ez a mező a következővel INameResolveroldható fel: . Nem
pollingIntervalInMs A Redis lekérdezésének gyakorisága ezredmásodpercben. Igen 1000
messagesPerWorker Hány üzenetet kell feldolgoznia az egyes függvénypéldányok számára. Annak meghatározására szolgál, hogy a függvény hány példányra legyen skálázva. Igen 100
count A gyorsítótárból egyszerre beolvasandó bejegyzések száma. A bejegyzések feldolgozása párhuzamosan történik. Igen 10
name ? Igen
direction Állítsa in értékre. Nem

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

Használat

A RedisListTrigger rendszer új elemeket jelenít meg egy listából, és megjeleníti ezeket a bejegyzéseket a függvényben. Az eseményindító konfigurálható, rögzített időközönként kérdezi le a Redist, és a listákból származó bejegyzéseket használja LPOP és RPOP jeleníti meg.

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.