Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O RedisListTrigger exibe novos elementos de uma lista e apresenta essas entradas para a função.
Para obter mais informações sobre gatilhos e associações do Cache do Azure para Redis, consulte Extensão do Redis para Azure Functions.
Escopo de disponibilidade para gatilhos de funções
| Tipo de gatilho | Redis Gerenciado pelo Azure | 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
No momento, não há suporte para gatilhos Redis para funções em execução em um plano de consumo ou em um plano de consumo flex.
Importante
O modelo Node.js v4 para Functions ainda não tem suporte na extensão Cache do Azure para Redis. Para obter mais detalhes sobre como funciona o modelo v4, consulte o Guia do desenvolvedor do Node.js para o Azure Functions. Para saber mais sobre as diferenças entre os modelos v3 e a v4, consulte o Guia de migração.
Importante
O modelo Python v2 para Functions ainda não é compatível com a extensão Cache do Azure para Redis. Para obter mais detalhes sobre como funciona o modelo v2, consulte o Guia de desenvolvedor do Node.js para Azure Functions.
Exemplo
Importante
Para funções .NET, é recomendado usar o modelo de trabalho isolado em vez do modelo em processo. Para obter uma comparação dos modelos de trabalho em processo e isolados, consulte as diferenças entre o modelo de trabalho isolado e o modelo em processo para .NET no Azure Functions.
O exemplo a seguir pesquisa 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);
}
}
Esta amostra utiliza o mesmo arquivo index.js, com dados de associação no arquivo function.json.
Aqui está o arquivo index.js:
module.exports = async function (context, entry) {
context.log(entry);
}
De function.json, aqui estão os dados de associação:
{
"bindings": [
{
"type": "redisListTrigger",
"listPopFromBeginning": true,
"connection": "redisConnectionString",
"key": "listTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "index.js"
}
Esta amostra utiliza o mesmo arquivo run.ps1, com dados de associação no arquivo function.json.
Aqui está o arquivo run.ps1:
param($entry, $TriggerMetadata)
Write-Host $entry
De function.json, aqui estão os dados de associação:
{
"bindings": [
{
"type": "redisListTrigger",
"listPopFromBeginning": true,
"connection": "redisConnectionString",
"key": "listTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
Esta amostra utiliza o mesmo arquivo __init__.py, com dados de associação no arquivo function.json.
O modelo de programação v1 do Python requer que você defina as associações em um arquivo function.json separado na pasta de funções. Para saber mais, confira o Guia do desenvolvedor do Python.
Aqui está o arquivo __init__.py:
import logging
def main(entry: str):
logging.info(entry)
De function.json, aqui estão os dados de associaçã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 | Obrigatório | Padrã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 da qual fazer a leitura. Esse campo pode ser resolvido por meio de INameResolver. |
Sim | |
PollingIntervalInMs |
Com que frequência realizar a verificação no Redis, em milissegundos. | Opcional | 1000 |
MessagesPerWorker |
Quantas mensagens cada instância de funções deve processar. Usado para determinar para quantas instâncias a função deve ser dimensionada. | Opcional | 100 |
Count |
Número de entradas a serem exibidas do Redis ao mesmo tempo. As entradas são processadas em paralelo. Compatível apenas com o Redis 6.2+ usando o argumento COUNT em LPOP e RPOP. |
Opcional | 10 |
ListPopFromBeginning |
Determina se exibe elementos do início usando LPOP ou exibe elementos do final usando RPOP. |
Opcional | true |
Anotações
| Parâmetro | Descrição | Obrigatório | Padrã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 |
Esse campo pode ser resolvido usando INameResolver. | Sim | |
pollingIntervalInMs |
Com que frequência realizar a verificação no Redis, em milissegundos. | Opcional | 1000 |
messagesPerWorker |
Quantas mensagens cada instância de funções deve processar. Usado para determinar para quantas instâncias a função deve ser dimensionada. | Opcional | 100 |
count |
Número de entradas para fazer a leitura do Redis de uma só vez. Eles 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 associação que você define no arquivo function.json.
| Propriedade function.json | Descrição | Opcional | Padrão |
|---|---|---|---|
type |
Nome do gatilho. | Não | |
listPopFromBeginning |
Se as entradas de fluxo devem ser excluídas após a execução da função. Defina 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 |
Esse campo pode ser resolvido por meio de INameResolver. |
Não | |
pollingIntervalInMs |
Com que frequência realizar a verificação no Redis, em milissegundos. | Sim | 1000 |
messagesPerWorker |
Quantas mensagens cada instância de funções deve processar. Usado para determinar para quantas instâncias a função deve ser dimensionada. | Sim | 100 |
count |
Número de entradas a serem lidas pelo cache de uma só vez. As entradas são processadas em paralelo. | Sim | 10 |
name |
? | Sim | |
direction |
Defina como in. |
Não |
Consulte a Seção de exemplo para obter exemplos completos.
Uso
O RedisListTrigger exibe novos elementos de uma lista e apresenta essas entradas para a função. O gatilho pesquisa o Redis em um intervalo fixo configurável e usa LPOP e RPOP para exibir entradas das listas.
| Tipo | Descrição |
|---|---|
byte[] |
A mensagem do canal. |
string |
A mensagem do canal. |
Custom |
O disparo utiliza a serialização do Json.NET para mapear a mensagem do canal de um string em um tipo personalizado. |