Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Он RedisStreamTrigger считывает новые записи из потока и отображает эти элементы в функцию.
Область доступности триггеров функций
| Тип триггера | Управляемый 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 см. в руководстве по миграции.
Пример
Внимание
Для функций .NET рекомендуется использовать изолированную рабочую модель для модели в процессе . Сравнение внутрипроцессных и изолированных рабочих моделей см. в различиях между изолированной рабочей моделью и внутрипроцессной моделью для .NET на Функции Azure.
| Модель выполнения | Описание |
|---|---|
| Изолированная рабочая модель | Код функции выполняется в отдельном рабочем процессе .NET. Используйте поддерживаемые версии .NET и платформа .NET Framework. Дополнительные сведения см. в руководстве по запуску функций Azure C# в изолированной рабочей модели. |
| Модель внутрипроцессного процесса | Код функции выполняется в том же процессе, что и хост-процесс Функций. Поддерживает только долгосрочные версии .NET. Дополнительные сведения см. в статье Разработка функций библиотеки классов C# с помощью службы "Функции Azure". |
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);
}
}
В этом примере используется тот же index.js файл с данными привязки function.json в файле.
index.js Вот файл:
module.exports = async function (context, entry) {
context.log(entry);
}
Ниже function.jsonприведены данные привязки:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "index.js"
}
В этом примере используется тот же run.ps1 файл с данными привязки function.json в файле.
run.ps1 Вот файл:
param($entry, $TriggerMetadata)
Write-Host ($entry | ConvertTo-Json)
Ниже function.jsonприведены данные привязки:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
Модель программирования Python версии 1 требует определения привязок в отдельном файле function.json в папке функции. Дополнительные сведения см. в руководстве разработчика Python.
В этом примере используется тот же __init__.py файл с данными привязки function.json в файле.
__init__.py Вот файл:
import logging
def main(entry: str):
logging.info(entry)
Ниже function.jsonприведены данные привязки:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
Атрибуты
| Параметры | Описание | Обязательное поле | По умолчанию. |
|---|---|---|---|
Connection |
Имя параметра приложения, содержащего строка подключения кэша, например:<cacheName>.redis.cache.windows.net:6380,password... |
Да | |
Key |
Ключ для чтения из. | Да | |
PollingIntervalInMs |
Как часто опрашивать сервер Redis в миллисекундах. | Необязательно | 1000 |
MessagesPerWorker |
Количество сообщений, которые должны обрабатываться каждой рабочей ролью функций. Используется для определения количества рабочих ролей, на которые должна масштабироваться функция. | Необязательно | 100 |
Count |
Количество элементов для извлечения из Redis одновременно. | Необязательно | 10 |
DeleteAfterProcess |
Указывает, удаляет ли функция записи потока после обработки. | Необязательно | false |
Заметки
| Параметр | Описание | Обязательное поле | По умолчанию. |
|---|---|---|---|
name |
entry |
Да | |
connection |
Имя параметра приложения, содержащего строка подключения кэша, например:<cacheName>.redis.cache.windows.net:6380,password... |
Да | |
key |
Ключ для чтения из. | Да | |
pollingIntervalInMs |
Как часто опрашивать Redis в миллисекундах. | Необязательно | 1000 |
messagesPerWorker |
Количество сообщений, которые должны обрабатываться каждой рабочей ролью функций. Он используется для определения количества рабочих ролей, на которые должна масштабироваться функция. | Необязательно | 100 |
count |
Количество записей для чтения из Redis одновременно. Записи обрабатываются параллельно. | Необязательно | 10 |
deleteAfterProcess |
Удаление записей потока после выполнения функции. | Необязательно | false |
Настройка
В следующей таблице описываются свойства конфигурации привязки, которые задаются в файле function.json.
| Свойства function.json | Описание | Обязательное поле | По умолчанию. |
|---|---|---|---|
type |
Да | ||
deleteAfterProcess |
Необязательно | false |
|
connection |
Имя параметра приложения, содержащего строка подключения кэша, например:<cacheName>.redis.cache.windows.net:6380,password... |
Да | |
key |
Ключ для чтения. | Да | |
pollingIntervalInMs |
Как часто опрашивать Redis в миллисекундах. | Необязательно | 1000 |
messagesPerWorker |
(необязательно) Количество сообщений, которые должны обрабатываться каждой рабочей ролью функций. Используется для определения количества рабочих ролей, которые должны масштабироваться. | Необязательно | 100 |
count |
Количество записей для чтения из Redis одновременно. Они обрабатываются параллельно. | Необязательно | 10 |
name |
Да | ||
direction |
Да |
Подробные примеры см. в разделе Примеры.
Использование
Функция RedisStreamTrigger Azure считывает новые записи из потока и отображает эти записи в функцию.
Триггер опрашивает Redis в настраиваемом фиксированном интервале и использует для XREADGROUP чтения элементов из потока.
Группа потребителей для всех экземпляров функции — это имя функции, то есть SimpleStreamTrigger для примера StreamTrigger.
Каждый экземпляр функций использует WEBSITE_INSTANCE_ID или создает случайный GUID для использования в качестве имени потребителя в группе, чтобы гарантировать, что развернутые экземпляры функции не считывают одни и те же сообщения из потока.
| Тип | Описание |
|---|---|
byte[] |
Сообщение из канала. |
string |
Сообщение из канала. |
Custom |
Триггер использует сериализацию Json.NET для сопоставления сообщения из канала с string пользовательским типом. |