Поделиться через


RedisListTrigger для Функции Azure

Всплывает RedisListTrigger новые элементы из списка и отображает эти записи в функцию.

Дополнительные сведения о триггерах и привязках Кэш Azure для Redis расширение Redis для Функции Azure.

Область доступности триггеров функций

Уровень Базовая Стандарт, Премиум Enterprise, Enterprise Flash
Списки Да Да Да

Внимание

Триггеры Redis в настоящее время не поддерживаются для функций, работающих в плане потребления.

Внимание

Модель Node.js версии 4 для функций пока не поддерживается расширением Кэш Azure для Redis. Дополнительные сведения о том, как работает модель версии 4, см. в руководстве разработчика по Функции Azure Node.js. Дополнительные сведения о различиях между версиями 3 и 4 см. в руководстве по миграции.

Внимание

Модель Python версии 2 для функций пока не поддерживается расширением Кэш Azure для Redis. Дополнительные сведения о том, как работает модель версии 2, см. в руководстве разработчика Функции Azure Python.

Пример

Внимание

Для функций .NET рекомендуется использовать изолированную рабочую модель для модели в процессе . Сравнение внутрипроцессных и изолированных рабочих моделей см. в различиях между изолированной рабочей моделью и внутрипроцессной моделью для .NET на Функции Azure.

В следующем примере выполняется опрос ключа 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);
        }
    }
}

Следующий пример опрашивает ключ listTest в экземпляре Localhost Redis по 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);
    }
}

В этом примере используется тот же index.js файл с данными привязки function.json в файле.

index.js Вот файл:

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

Ниже function.jsonприведены данные привязки:

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

В этом примере используется тот же run.ps1 файл с данными привязки function.json в файле.

run.ps1 Вот файл:

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

Ниже function.jsonприведены данные привязки:

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

В этом примере используется тот же __init__.py файл с данными привязки function.json в файле.

Модель программирования Python версии 1 требует определения привязок в отдельном файле function.json в папке функции. Дополнительные сведения см. в руководстве разработчика Python.

__init__.py Вот файл:

import logging

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

Ниже function.jsonприведены данные привязки:

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

Атрибуты

Параметр Описание: Обязательное поле По умолчанию.
Connection Имя параметра приложения, содержащего строка подключения кэша, например:<cacheName>.redis.cache.windows.net:6380,password... Да
Key Ключ для чтения из. Это поле можно разрешить с помощью INameResolver. Да
PollingIntervalInMs Как часто опрашивать Redis в миллисекундах. Необязательно 1000
MessagesPerWorker Сколько сообщений каждый экземпляр функций должен обрабатывать. Используется для определения количества экземпляров, в которые должна масштабироваться функция. Необязательно 100
Count Количество записей, которые будут всплывать из Redis в один раз. Записи обрабатываются параллельно. Поддерживается только в Redis 6.2+ с помощью аргумента COUNT и LPOP RPOP. Необязательно 10
ListPopFromBeginning Определяет, следует ли всплывать записи с самого начала использования LPOPили всплывать с конца.RPOP Необязательно true

Заметки

Параметр Описание: Обязательное поле По умолчанию.
name "entry"
connection Имя параметра приложения, содержащего строка подключения кэша, например:<cacheName>.redis.cache.windows.net:6380,password... Да
key Это поле можно разрешить с помощью INameResolver. Да
pollingIntervalInMs Как часто опрашивать Redis в миллисекундах. Необязательно 1000
messagesPerWorker Сколько сообщений каждый экземпляр функций должен обрабатывать. Используется для определения количества экземпляров, в которые должна масштабироваться функция. Необязательно 100
count Количество записей для чтения из Redis одновременно. Они обрабатываются параллельно. Необязательно 10
listPopFromBeginning Удаление записей потока после выполнения функции. Да true

Настройка

В следующей таблице описываются свойства конфигурации привязки, которые задаются в файле function.json.

Свойство function.json Description Необязательно По умолчанию.
type Имя триггера. No
listPopFromBeginning Удаление записей потока после выполнения функции. Задайте значение true. Да true
connection Имя параметра приложения, содержащего строка подключения кэша, например:<cacheName>.redis.cache.windows.net:6380,password... No
key Это поле можно разрешить с помощью INameResolver. No
pollingIntervalInMs Как часто опрашивать Redis в миллисекундах. Да 1000
messagesPerWorker Сколько сообщений каждый экземпляр функций должен обрабатывать. Используется для определения количества экземпляров, в которые должна масштабироваться функция. Да 100
count Количество записей для чтения из кэша одновременно. Записи обрабатываются параллельно. Да 10
name ? Да
direction Задайте значение in. No

Подробные примеры см. в разделе Примеры.

Использование

Всплывает RedisListTrigger новые элементы из списка и отображает эти записи в функцию. Триггер опрашивает Redis в настраиваемом фиксированном интервале и использует и RPOP использует LPOP всплывающие записи из списков.

Тип Описание
byte[] Сообщение из канала.
string Сообщение из канала.
Custom Триггер использует сериализацию Json.NET для сопоставления сообщения из канала с string пользовательским типом.