RedisListTrigger para Azure Functions
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 do 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 os gatilhos do Redis para funções em execução no Plano de Consumo.
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. |