Azure İşlevleri için RedisStreamTrigger

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

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

Tetikleyici Türü Yönetilen Redis'i Azure Redis için Azure Önbellek
Akışlar Evet Evet

Önemli

Azure Yönetilen Redis veya Redis için Azure Önbellek Kurumsal katmanlarını kullanırken 6380 veya 6379 numaralı bağlantı noktası yerine 10000 numaralı bağlantı noktasını kullanın.

Önemli

Redis tetikleyicileri şu anda Tüketim planında veya Esnek 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 Önbellek 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 Önbellek 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 isolated worker modelinin in-process modeli üzerinden kullanılması önerilir. in-process ve isolated worker modellerinin karşılaştırması için, Azure İşlevleri .NET için isolated worker modeli ile in-process modeli arasındaki farkları görün.

Yürütme modeli Açıklama
Yalıtılmış çalışan modeli İşlev kodunuz ayrı bir .NET çalışan işleminde çalışır. .NET ve .NET Framework supported sürümleriyle kullanın. Daha fazla bilgi edinmek için bkz. yalıtılmış çalışan modelinde C# Azure İşlevleri çalıştırmak için Guide.
İşlem içi model İşlev kodunuz İşlevler konak işlemiyle aynı işlemde çalışır. yalnızca .NET Long Term Support (LTS) sürümlerini destekler. Daha fazla bilgi edinmek için bkz. Azure İşlevleri kullanarak Develop C# sınıf kitaplığı işlevleri.
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 index.js bağlama verileriyle aynı function.json 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 run.ps1 bağlama verileriyle aynı function.json 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, bağlamaları işlev klasöründe ayrı bir function.json dosyasında tanımlamanızı gerektirir. Daha fazla bilgi için bkz. Python geliştirici kılavuzu.

Bu örnek, dosyadaki __init__.py bağlama verileriyle aynı function.json 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 application ayarının adı, örneğin: <cacheName>.redis.cache.windows.net:6380,password... Evet
Key Okunacak anahtar. Evet
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 Evet
connection Önbellek bağlantı dizesi içeren application ayarının adı, örneğin: <cacheName>.redis.cache.windows.net:6380,password... Evet
key Okunacak anahtar. Evet
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 Evet
deleteAfterProcess İsteğe bağlı false
connection Önbellek bağlantı dizesi içeren application ayarının adı, örneğin: <cacheName>.redis.cache.windows.net:6380,password... Evet
key Okunacak anahtar. Evet
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 Evet
direction Evet

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 StreamTrigger örneği için SimpleStreamTrigger.

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.

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