Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Redis-funkciók közzétételi/feliratkozási funkciói lehetővé teszik az üzenetek redisbe küldését és az előfizetőknek való közvetítését.
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
| Eseményindító típusa | Azure által felügyelt Redis | Azure Cache for Redis |
|---|---|---|
| Pub/Sub Trigger | 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.
Figyelmeztetés
Ez az eseményindító nem támogatott a Használati csomagban vagy a Flex Consumption-csomagban , mert a Redis PubSub megköveteli, hogy az ügyfelek mindig aktívan hallgassák az összes üzenetet. A használati csomagok esetében előfordulhat, hogy a függvény kihagy bizonyos, a csatornán közzétett üzeneteket.
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éldák
| 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. |
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.
Ez a minta figyeli a csatornát pubsubTest.
using Microsoft.Extensions.Logging;
namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisPubSubTrigger
{
internal class SimplePubSubTrigger
{
private readonly ILogger<SimplePubSubTrigger> logger;
public SimplePubSubTrigger(ILogger<SimplePubSubTrigger> logger)
{
this.logger = logger;
}
[Function(nameof(SimplePubSubTrigger))]
public void Run(
[RedisPubSubTrigger(Common.connectionStringSetting, "pubsubTest")] string message)
{
logger.LogInformation(message);
}
}
}
Ez a minta figyeli a kulcshoz keyspaceTesttartozó kulcstér-értesítéseket.
using Microsoft.Extensions.Logging;
namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisPubSubTrigger
{
internal class KeyspaceTrigger
{
private readonly ILogger<KeyspaceTrigger> logger;
public KeyspaceTrigger(ILogger<KeyspaceTrigger> logger)
{
this.logger = logger;
}
[Function(nameof(KeyspaceTrigger))]
public void Run(
[RedisPubSubTrigger(Common.connectionStringSetting, "__keyspace@0__:keyspaceTest")] string message)
{
logger.LogInformation(message);
}
}
}
Ez a minta figyeli a törlési parancs keyeventértesítéseitDEL.
using Microsoft.Extensions.Logging;
namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisPubSubTrigger
{
internal class KeyeventTrigger
{
private readonly ILogger<KeyeventTrigger> logger;
public KeyeventTrigger(ILogger<KeyeventTrigger> logger)
{
this.logger = logger;
}
[Function(nameof(KeyeventTrigger))]
public void Run(
[RedisPubSubTrigger(Common.connectionStringSetting, "__keyevent@0__:del")] string message)
{
logger.LogInformation($"Key '{message}' deleted.");
}
}
}
Ez a minta figyeli a csatornát pubsubTest.
package com.function.RedisPubSubTrigger;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;
public class SimplePubSubTrigger {
@FunctionName("SimplePubSubTrigger")
public void run(
@RedisPubSubTrigger(
name = "req",
connection = "redisConnectionString",
channel = "pubsubTest",
pattern = false)
String message,
final ExecutionContext context) {
context.getLogger().info(message);
}
}
Ez a minta figyeli a kulcshoz myKeytartozó kulcstér-értesítéseket.
package com.function.RedisPubSubTrigger;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;
public class KeyspaceTrigger {
@FunctionName("KeyspaceTrigger")
public void run(
@RedisPubSubTrigger(
name = "req",
connection = "redisConnectionString",
channel = "__keyspace@0__:keyspaceTest",
pattern = false)
String message,
final ExecutionContext context) {
context.getLogger().info(message);
}
}
Ez a minta figyeli a törlési parancs keyeventértesítéseitDEL.
package com.function.RedisPubSubTrigger;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;
public class KeyeventTrigger {
@FunctionName("KeyeventTrigger")
public void run(
@RedisPubSubTrigger(
name = "req",
connection = "redisConnectionString",
channel = "__keyevent@0__:del",
pattern = false)
String message,
final ExecutionContext context) {
context.getLogger().info(message);
}
}
Ez a minta ugyanazt index.js a fájlt használja, kötési adatokkal a function.json fájlban, amely meghatározza, hogy az eseményindító melyik csatornán történik.
A fájl a index.js következő:
module.exports = async function (context, message) {
context.log(message);
}
Feladó function.json:
Az alábbi kötési adatok a csatornát pubsubTestfigyelik.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "pubsubTest",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "index.js"
}
Az alábbi kötési adatok a kulcs keyspaceTestkulcstérértesítéseit figyelik.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyspace@0__:keyspaceTest",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "index.js"
}
Az alábbi kötési adatokkal figyelheti a keyevent törlési parancs DELértesítéseit.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyevent@0__:del",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "index.js"
}
Ez a minta ugyanazt run.ps1 a fájlt használja, kötési adatokkal a function.json fájlban, amely meghatározza, hogy az eseményindító melyik csatornán történik.
A fájl a run.ps1 következő:
param($message, $TriggerMetadata)
Write-Host $message
Feladó function.json:
Az alábbi kötési adatok a csatornát pubsubTestfigyelik.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "pubsubTest",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
Az alábbi kötési adatok a kulcs keyspaceTestkulcstérértesítéseit figyelik.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyspace@0__:keyspaceTest",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
Az alábbi kötési adatokkal figyelheti a keyevent törlési parancs DELértesítéseit.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyevent@0__:del",
"pattern": false,
"name": "message",
"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, kötési adatokkal a function.json fájlban, amely meghatározza, hogy az eseményindító melyik csatornán történik.
A fájl a __init__.py következő:
import logging
def main(message: str):
logging.info(message)
Feladó function.json:
Az alábbi kötési adatok a csatornát pubsubTestfigyelik.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "pubsubTest",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
Az alábbi kötési adatok a kulcs keyspaceTestkulcstérértesítéseit figyelik.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyspace@0__:keyspaceTest",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
Az alábbi kötési adatokkal figyelheti a keyevent törlési parancs DELértesítéseit.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyevent@0__:del",
"pattern": false,
"name": "message",
"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 | |
Channel |
A pub alcsatornája, amelyet az eseményindítónak figyelnie kell. Támogatja a glob stílusú csatornamintákat. Ez a mező a következővel INameResolveroldható fel: . |
Igen |
Jegyzetek
| Paraméter | Leírás | Kötelező | Alapértelmezett |
|---|---|---|---|
name |
A függvény által visszaadott értéket tartalmazó változó neve. | 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 | |
channel |
A pub alcsatornája, amelyet az eseményindítónak figyelnie kell. Támogatja a glob stílusú csatornamintákat. | Igen |
Konfiguráció
| function.json tulajdonság | Leírás | Kötelező | Alapértelmezett |
|---|---|---|---|
type |
Eseményindító típusa. A pub sub trigger esetében a típus a következő redisPubSubTrigger: . |
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 | |
channel |
Annak a pub-alcsatornának a neve, amelyre előfizetnek. | Igen | |
pattern |
Egy logikai érték, amely azt jelzi, hogy az adott csatorna mintaegyezést használ. Ha pattern igaz, akkor a csatorna a literál helyett glob stílusú mintaként lesz kezelve. |
Igen | |
name |
A függvény által visszaadott értéket tartalmazó változó neve. | Igen | |
direction |
A beállításnak a inkövetkezőnek kell lennie: . |
Igen |
Fontos
A connection paraméter nem tartalmazza a Redis-gyorsítótárat, kapcsolati sztring magát. Ehelyett a kapcsolati sztring tároló környezeti változó nevére mutat. Ez biztonságosabbá teszi az alkalmazást. További információ: Redis kapcsolati sztring.
Használat
A Redis-funkciók közzétételi/feliratkozási funkciói lehetővé teszik az üzenetek redisbe küldését és az előfizetőknek való közvetítését. Ez RedisPubSubTrigger lehetővé teszi, hogy az Azure Functions pub/altevékenység esetén aktiválódjon. A RedisPubSubTriggerrendszer feliratkozik egy adott csatornamintára PSUBSCRIBE, és megjeleníti az ezeken a csatornákon fogadott üzeneteket a függvénynek.
Előfeltételek és korlátozások
- Ez
RedisPubSubTriggernem képes figyelni a kulcstér-értesítéseket a fürtözött gyorsítótárakon. - Az alapszintű függvények nem támogatják a be-
keyspaceéskeyeventértesítések indítását aRedisPubSubTrigger. - Ez
RedisPubSubTriggernem támogatott a Használati csomagban vagy a Flex Consumption-csomagban , mert a Redis PubSub megköveteli, hogy az ügyfelek mindig aktívan hallgassák az összes üzenetet. A használati csomagok esetében előfordulhat, hogy a függvény kihagy bizonyos, a csatornán közzétett üzeneteket. - A függvényeket
RedisPubSubTriggernem szabad több példányra skálázni. Minden példány figyeli és feldolgozza az egyes pub-alüzeneteket, ami duplikált feldolgozást eredményez.
Figyelmeztetés
Ez az eseményindító nem támogatott a használati csomagban vagy a Rugalmas használatú csomagban , mert a Redis PubSub megköveteli, hogy az ügyfelek mindig aktívan hallgassák az összes üzenetet. A használati csomagok esetében előfordulhat, hogy a függvény kihagy bizonyos, a csatornán közzétett üzeneteket.
Aktiválás kulcstérértesítéseken
A Redis egy beépített koncepciót, az úgynevezett keyspace-értesítéseket kínál. Ha engedélyezve van, ez a funkció a gyorsítótárműveletek széles skáláját teszi közzé egy dedikált pubban/alcsatornában. A támogatott műveletek közé tartoznak az adott kulcsokat érintő műveletek, az úgynevezett kulcstérértesítések és bizonyos parancsok, az úgynevezett keyevent-értesítések. Számos Redis-művelet támogatott, például SET: , DELés EXPIRE. A teljes lista a kulcstér értesítési dokumentációjában található.
A keyspace rendszer keyevent az alábbi szintaxissal teszi közzé az értesítéseket:
PUBLISH __keyspace@0__:<affectedKey> <command>
PUBLISH __keyevent@0__:<affectedCommand> <key>
Mivel ezek az események pub/alcsatornákon vannak közzétéve, a RedisPubSubTrigger rendszer képes felvenni őket. További példákért tekintse meg a RedisPubSubTrigger szakaszt.
Fontos
Az Azure Cache for Redisben keyspace az értesítések közzététele előtt engedélyezni kell az eseményeket. További információ: Speciális beállítások.
| Típus | Leírás |
|---|---|
string |
A csatornaüzenet JSON-ként (bájttípusokhoz kódolt UTF-8) szerializálva az alábbi formátumban. |
Custom |
Az eseményindító Json.NET szerializálással képezi le a csatorna üzenetét az adott egyéni típusra. |
JSON-sztringformátum
{
"SubscriptionChannel":"__keyspace@0__:*",
"Channel":"__keyspace@0__:mykey",
"Message":"set"
}
| Típus | Leírás |
|---|---|
string |
A csatornaüzenet JSON-ként (bájttípusokhoz kódolt UTF-8) szerializálva az alábbi formátumban. |
Custom |
Az eseményindító Json.NET szerializálással képezi le a csatorna üzenetét egy string egyéni típusba. |
{
"SubscriptionChannel":"__keyspace@0__:*",
"Channel":"__keyspace@0__:mykey",
"Message":"set"
}