Aracılığıyla paylaş


Azure İşlevleri için RedisListTrigger

bir RedisListTrigger listeden yeni öğeler açar ve bu girdileri işleve gösterir.

Redis için Azure Cache tetikleyicileri ve bağlamaları hakkında daha fazla bilgi için Azure İşlevleri için Redis Uzantısı.

İşlev tetikleyicileri için kullanılabilirlik kapsamı

Katman Temel Standart, Premium Enterprise, Enterprise Flash
Listeler Yes Evet Yes

Önemli

Redis tetikleyicileri şu anda Tüketim planında çalışan işlevler için desteklenmemektedir.

Önemli

İşlevler için Node.js v4 modeli henüz Redis için Azure Cache uzantısı tarafından desteklenmiyor. v4 modelinin nasıl çalıştığı hakkında daha fazla bilgi için Azure İşlevleri Node.js geliştirici kılavuzuna bakın. v3 ile v4 arasındaki farklar hakkında daha fazla bilgi edinmek için geçiş kılavuzuna bakın.

Önemli

İşlevler için Python v2 modeli henüz Redis için Azure Cache uzantısı tarafından desteklenmiyor. v2 modelinin nasıl çalıştığı hakkında daha fazla bilgi için Azure İşlevleri Python geliştirici kılavuzuna bakın.

Örnek

Önemli

.NET işlevleri için, işlem içi model üzerinde yalıtılmış çalışan modelinin kullanılması önerilir. İşlem içi ve yalıtılmış çalışan modellerinin karşılaştırması için bkz. yalıtılmış çalışan modeli ile Azure İşlevleri üzerinde .NET için işlem içi model arasındaki farklar.

Aşağıdaki örnek anahtarını listTestyoklar:

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);
        }
    }
}

Aşağıdaki örnek, konumundaki bir localhost Redis örneğindeki redisLocalhostanahtarı listTest yoklar:

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);
    }
}

Bu örnek, dosyadaki function.json bağlama verileriyle aynı index.js dosyayı kullanır.

Dosya şu şekildedir index.js :

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

'den function.jsonbağlama verileri aşağıdadır:

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

Bu örnek, dosyadaki function.json bağlama verileriyle aynı run.ps1 dosyayı kullanır.

Dosya şu şekildedir run.ps1 :

param($entry, $TriggerMetadata)
Write-Host $entry

'den function.jsonbağlama verileri aşağıdadır:

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

Bu örnek, dosyadaki function.json bağlama verileriyle aynı __init__.py dosyayı kullanır.

Python v1 programlama modeli, işlev klasöründeki ayrı bir function.json dosyasında bağlamaları tanımlamanızı gerektirir. Daha fazla bilgi için bkz . Python geliştirici kılavuzu.

Dosya şu şekildedir __init__.py :

import logging

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

'den function.jsonbağlama verileri aşağıdadır:

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

Özellikler

Parametre Açıklama Zorunlu Varsayılan
Connection Önbellek bağlantı dizesi içeren uygulama ayarının adı, örneğin:<cacheName>.redis.cache.windows.net:6380,password... Yes
Key Okunacak anahtar. Bu alan kullanılarak INameResolverçözümlenebilir. Yes
PollingIntervalInMs Redis'i milisaniye cinsinden yoklama sıklık. İsteğe bağlı 1000
MessagesPerWorker Her işlev örneğinin işlemesi gereken ileti sayısı. İşlevin kaç örneğe ölçeklendirilmesi gerektiğini belirlemek için kullanılır. İsteğe bağlı 100
Count Redis'ten bir kerede açılacak girdi sayısı. Girdiler paralel olarak işlenir. Yalnızca ve RPOPbağımsız değişkeni kullanılarak COUNT Redis 6.2+ üzerinde LPOP desteklenir. İsteğe bağlı 10
ListPopFromBeginning kullanarak girişlerin en baştan LPOPmı yoksa kullanarak sonundan RPOPmı pop girileceğini belirler. İsteğe bağlı true

Ek Açıklamalar

Parametre Açıklama Zorunlu Varsayılan
name "entry"
connection Önbellek bağlantı dizesi içeren uygulama ayarının adı, örneğin:<cacheName>.redis.cache.windows.net:6380,password... Yes
key Bu alan INameResolver kullanılarak çözümlenebilir. Yes
pollingIntervalInMs Redis'i milisaniye cinsinden yoklama sıklık. İsteğe bağlı 1000
messagesPerWorker Her işlev örneğinin işlemesi gereken ileti sayısı. İşlevin kaç örneğe ölçeklendirilmesi gerektiğini belirlemek için kullanılır. İsteğe bağlı 100
count Redis'ten bir kerede okunacak girdilerin sayısı. Bunlar paralel olarak işlenir. İsteğe bağlı 10
listPopFromBeginning İşlev çalıştırıldıktan sonra akış girişlerinin silinip silinmeyeceği. Yes true

Yapılandırma

Aşağıdaki tabloda, function.json dosyasında ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.

function.json Özelliği Açıklama İsteğe bağlı Varsayılan
type Tetikleyicinin adı. Hayır
listPopFromBeginning İşlev çalıştırıldıktan sonra akış girişlerinin silinip silinmeyeceği. true olarak ayarlayın. Yes true
connection Önbellek bağlantı dizesi içeren uygulama ayarının adı, örneğin:<cacheName>.redis.cache.windows.net:6380,password... Hayır
key Bu alan kullanılarak INameResolverçözümlenebilir. Hayır
pollingIntervalInMs Redis'i milisaniye cinsinden yoklama sıklık. Yes 1000
messagesPerWorker Her işlev örneğinin işlemesi gereken ileti sayısı. İşlevin kaç örneğe ölçeklendirilmesi gerektiğini belirlemek için kullanılır. Yes 100
count Önbellekten bir kerede okunacak girdilerin sayısı. Girdiler paralel olarak işlenir. Yes 10
name ? Yes
direction in olarak ayarlayın. Hayır

Tam örnekler için Örnek bölümüne bakın.

Kullanım

bir RedisListTrigger listeden yeni öğeler açar ve bu girdileri işleve gösterir. Tetikleyici, Redis'i yapılandırılabilir bir sabit aralıkta yoklar ve listelerden girdileri açmak için ve RPOP kullanırLPOP.

Type Açıklama
byte[] Kanaldan gelen ileti.
string Kanaldan gelen ileti.
Custom Tetikleyici, bir kanalındaki string iletiyi özel bir türe eşlemek için Json.NET serileştirme kullanır.