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


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

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

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

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

Тип триггера Управляемый Redis в Azure Кэш Azure для Redis
Списки Да Да

Внимание

При использовании Управляемого Redis azure или уровнях enterprise Кэш Azure для Redis используйте порт 10000, а не порт 6380 или 6379.

Внимание

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

Внимание

Модель 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 и LPOPRPOP. Необязательно 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 Описание: Необязательно По умолчанию.
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 в настраиваемом фиксированном интервале и использует и LPOP использует RPOP всплывающие записи из списков.

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