Aracılığıyla paylaş


Azure İşlevleri için RedisStreamTrigger

bir RedisStreamTrigger akıştan yeni girdileri okur ve bu öğeleri işleve gösterir.

Katman Temel Standart, Premium Enterprise, Enterprise Flash
Akışlar 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.

Yürütme modeli Açıklama
Yalıtılmış çalışan modeli İşlev kodunuz ayrı bir .NET çalışan işleminde çalışır. Desteklenen .NET ve .NET Framework sürümleriyle kullanın. Daha fazla bilgi edinmek için bkz . .NET yalıtılmış çalışan işlemi işlevleri geliştirme.
İşlem içi model İşlev kodunuz İşlevler konak işlemiyle aynı işlemde çalışır. .NET'in yalnızca Uzun Süreli Destek (LTS) sürümlerini destekler. Daha fazla bilgi edinmek için bkz . .NET sınıf kitaplığı işlevleri geliştirme.
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);
    }
}

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": "redisStreamTrigger",
      "connection": "redisConnectionString",
      "key": "streamTest",
      "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 | ConvertTo-Json)

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

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

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.

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

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

Özellikler

Parametreler 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. Yes
PollingIntervalInMs Redis sunucusunun milisaniye cinsinden yoklama sıklıkları. İsteğe bağlı 1000
MessagesPerWorker Her işlev çalışanının işlemesi gereken ileti sayısı. İşlevin kaç çalışana ölçeklendirilmesi gerektiğini belirlemek için kullanılır. İsteğe bağlı 100
Count Bir kerede Redis'ten çekecek öğe sayısı. İsteğe bağlı 10
DeleteAfterProcess İşlevin işlendikten sonra akış girdilerini silip silmediğini gösterir. İsteğe bağlı false

Ek Açıklamalar

Parametre Açıklama Zorunlu Varsayılan
name entry Yes
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. Yes
pollingIntervalInMs Redis'i milisaniye cinsinden yoklama sıklığı. İsteğe bağlı 1000
messagesPerWorker Her işlev çalışanının işlemesi gereken ileti sayısı. İşlevin kaç çalışana ölçeklendirilmesi gerektiğini belirlemek için kullanılır. İsteğe bağlı 100
count Redis'ten bir kerede okunacak girdilerin sayısı. Girdiler paralel olarak işlenir. İsteğe bağlı 10
deleteAfterProcess İşlev çalıştırıldıktan sonra akış girişlerinin silinip silinmeyeceği. İsteğe bağlı false

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 Özellikleri Açıklama Zorunlu Varsayılan
type Yes
deleteAfterProcess İsteğe bağlı false
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. Yes
pollingIntervalInMs Redis'i milisaniye cinsinden yoklama sıklık. İsteğe bağlı 1000
messagesPerWorker (isteğe bağlı) Her işlev çalışanının işlemesi gereken ileti sayısı. İşlevin kaç çalışanı ölçeklendirmesi 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
name Yes
direction Yes

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

Kullanım

RedisStreamTrigger Azure İşlevi bir akıştan yeni girdileri okur ve bu girişleri işleve gösterir.

Tetikleyici, Redis'i yapılandırılabilir bir sabit aralıkta yoklar ve akıştan öğeleri okumak için kullanır XREADGROUP .

bir işlevin tüm örnekleri için tüketici grubu işlevin adıdır, yani SimpleStreamTrigger StreamTrigger örneği için.

Her işlev örneği, ölçeği genişletilen işlev örneklerinin WEBSITE_INSTANCE_ID akıştan aynı iletileri okumadığından emin olmak için grup içinde tüketici adı olarak kullanmak üzere veya rastgele bir GUID oluşturur.

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.