Partilhar via


RedisListTrigger para Azure Functions

O RedisListTrigger exibe novos elementos de uma lista e exibe essas entradas para a função.

Para obter mais informações sobre gatilhos e associações do Cache do Azure para Redis, a Extensão do Redis para Azure Functions.

Âmbito de disponibilidade para acionadores de funções

Trigger Type (Tipo de Acionador) Azure Managed Redis Cache do Azure para Redis
Listas Sim Sim

Importante

Ao usar o Azure Managed Redis ou as camadas Enterprise do Cache do Azure para Redis, use a porta 10000 em vez da porta 6380 ou 6379.

Importante

Atualmente, os gatilhos Redis não são suportados para funções em execução no plano de consumo.

Importante

O modelo Node.js v4 para Functions ainda não é suportado pela extensão Cache do Azure para Redis. Para obter mais detalhes sobre como o modelo v4 funciona, consulte o Guia do desenvolvedor do Azure Functions Node.js. Para saber mais sobre as diferenças entre v3 e v4, consulte o guia de migração.

Importante

O modelo Python v2 para Functions ainda não é suportado pela extensão Cache for Redis do Azure. Para obter mais detalhes sobre como o modelo v2 funciona, consulte o guia do desenvolvedor Python do Azure Functions.

Exemplo

Importante

Para funções .NET, o uso do modelo de trabalho isolado é recomendado sobre o modelo em processo . Para obter uma comparação dos modelos de trabalho em processo e isolado, consulte as diferenças entre o modelo de trabalhador isolado e o modelo em processo para .NET no Azure Functions.

O exemplo a seguir sonda a chave 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);
        }
    }
}

O exemplo a seguir sonda a chave listTest em uma instância do Redis localhost em 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);
    }
}

Este exemplo usa o mesmo index.js arquivo, com dados de vinculação no function.json arquivo.

Aqui está o index.js arquivo:

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

A partir de function.json, aqui estão os dados de vinculação:

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

Este exemplo usa o mesmo run.ps1 arquivo, com dados de vinculação no function.json arquivo.

Aqui está o run.ps1 arquivo:

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

A partir de function.json, aqui estão os dados de vinculação:

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

Este exemplo usa o mesmo __init__.py arquivo, com dados de vinculação no function.json arquivo.

O modelo de programação Python v1 requer que você defina ligações em um arquivo function.json separado na pasta de funções. Para obter mais informações, consulte o guia do desenvolvedor do Python.

Aqui está o __init__.py arquivo:

import logging

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

A partir de function.json, aqui estão os dados de vinculação:

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

Atributos

Parâmetro Descrição Necessário Predefinição
Connection O nome da configuração do aplicativo que contém a cadeia de conexão de cache, como:<cacheName>.redis.cache.windows.net:6380,password... Sim
Key Chave para ler. Este campo pode ser resolvido usando INameResolver. Sim
PollingIntervalInMs Com que frequência sondar Redis em milissegundos. Opcional 1000
MessagesPerWorker Quantas mensagens cada instância de funções deve processar. Usado para determinar quantas instâncias a função deve ser dimensionada. Opcional 100
Count Número de entradas para pop do Redis ao mesmo tempo. As inscrições são processadas em paralelo. Suportado apenas no Redis 6.2+ usando o COUNT argumento in LPOP e RPOP. Opcional 10
ListPopFromBeginning Determina se as entradas pop do início usando LPOP, ou as entradas pop do final usando RPOP. Opcional true

Anotações

Parâmetro Descrição Necessário Predefinição
name "entrada"
connection O nome da configuração do aplicativo que contém a cadeia de conexão de cache, como:<cacheName>.redis.cache.windows.net:6380,password... Sim
key Este campo pode ser resolvido usando INameResolver. Sim
pollingIntervalInMs Com que frequência sondar Redis em milissegundos. Opcional 1000
messagesPerWorker Quantas mensagens cada instância de funções deve processar. Usado para determinar quantas instâncias a função deve ser dimensionada. Opcional 100
count Número de entradas para ler do Redis ao mesmo tempo. Estes são processados em paralelo. Opcional 10
listPopFromBeginning Se as entradas de fluxo devem ser excluídas após a execução da função. Sim true

Configuração

A tabela a seguir explica as propriedades de configuração de vinculação definidas no arquivo function.json.

function.json Propriedade Description Opcional Predefinido
type Nome do gatilho. Não
listPopFromBeginning Se as entradas de fluxo devem ser excluídas após a execução da função. Definido como true. Sim true
connection O nome da configuração do aplicativo que contém a cadeia de conexão de cache, como:<cacheName>.redis.cache.windows.net:6380,password... Não
key Este campo pode ser resolvido usando INameResolver. Não
pollingIntervalInMs Com que frequência sondar Redis em milissegundos. Sim 1000
messagesPerWorker Quantas mensagens cada instância de funções deve processar. Usado para determinar quantas instâncias a função deve ser dimensionada. Sim 100
count Número de entradas a serem lidas do cache ao mesmo tempo. As inscrições são processadas em paralelo. Sim 10
name ? Sim
direction Definido como in. Não

Consulte a seção Exemplo para obter exemplos completos.

Utilização

O RedisListTrigger exibe novos elementos de uma lista e exibe essas entradas para a função. O gatilho sonda Redis em um intervalo fixo configurável, e usa LPOP e RPOP para exibir entradas das listas.

Tipo Description
byte[] A mensagem do canal.
string A mensagem do canal.
Custom O gatilho usa Json.NET serialização para mapear a mensagem do canal de um string para um tipo personalizado.