Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O RedisStreamTrigger lê novas entradas de um fluxo e apresenta esses elementos para a função.
Âmbito de disponibilidade para acionadores de funções
| Trigger Type (Tipo de Acionador) | Azure Managed Redis | Azure Cache for Redis |
|---|---|---|
| Fluxos | Sim | Sim |
Importante
Ao usar o Azure Managed Redis ou os níveis Enterprise do Azure Cache for 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 executadas em um plano de consumo ou em um plano de consumo flexível.
Importante
O modelo Node.js v4 para Funções ainda não é suportado pela extensão Azure Cache for Redis. Para mais detalhes sobre como funciona o modelo v4, consulte o guia para desenvolvedores 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 Funções ainda não é suportado pela extensão Azure Cache for Redis. Para mais detalhes sobre como funciona o modelo v2, consulte o guia para desenvolvedores Azure Functions Python.
Exemplo
Importante
Para funções .NET, recomenda-se o uso do modelo worker em vez do modelo in-process. Para uma comparação dos modelos in-process e isolated worker, veja as diferenças entre o modelo isolated worker e o modelo in-process para .NET em Azure Functions.
| Modelo de execução | Descrição |
|---|---|
| Modelo de trabalhador isolado | O teu código de função corre num processo de trabalho .NET separado. Use com versões suportadas de .NET e .NET Framework. Para saber mais, consulte Guide para executar C# Azure Functions no modelo de trabalhador isolado. |
| Modelo em processo | Seu código de função é executado no mesmo processo que o processo de host de funções. Suporta apenas versões Long Term Support (LTS) do .NET. Para saber mais, consulte Desenvolver funções de biblioteca de classes C# usando Azure Functions. |
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);
}
}
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": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"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 | ConvertTo-Json)
A partir de function.json, aqui estão os dados de vinculação:
{
"bindings": [
{
"type": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
O modelo de programação Python v1 exige que definas bindings num ficheiro separado function.json na pasta de funções. Para mais informações, consulte o guia para desenvolvedores Python.
Este exemplo usa o mesmo __init__.py arquivo, com dados de vinculação no function.json arquivo.
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": "redisStreamTrigger",
"connection": "redisConnectionString",
"key": "streamTest",
"pollingIntervalInMs": 1000,
"maxBatchSize": 16,
"name": "entry",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
Atributos
| Parâmetros | Descrição | Necessário | Predefinição |
|---|---|---|---|
Connection |
O nome da definição application que contém o connection string de cache, tais como: <cacheName>.redis.cache.windows.net:6380,password... |
Sim | |
Key |
Chave para ler. | Sim | |
PollingIntervalInMs |
Com que frequência sondar o servidor Redis em milissegundos. | Opcional | 1000 |
MessagesPerWorker |
O número de mensagens que cada trabalhador de funções deve processar. Usado para determinar para quantos trabalhadores a função deve ser dimensionada. | Opcional | 100 |
Count |
Número de elementos a serem extraídos do Redis ao mesmo tempo. | Opcional | 10 |
DeleteAfterProcess |
Indica se a função exclui as entradas de fluxo após o processamento. | Opcional | false |
Anotações
| Parâmetro | Descrição | Necessário | Predefinição |
|---|---|---|---|
name |
entry |
Sim | |
connection |
O nome da definição application que contém o connection string de cache, tais como: <cacheName>.redis.cache.windows.net:6380,password... |
Sim | |
key |
Chave para ler. | Sim | |
pollingIntervalInMs |
Com que frequência sondar Redis, em milissegundos. | Opcional | 1000 |
messagesPerWorker |
O número de mensagens que cada trabalhador de funções deve processar. Ele é usado para determinar para quantos trabalhadores a função deve ser dimensionada. | Opcional | 100 |
count |
Número de entradas para ler do Redis ao mesmo tempo. As inscrições são processadas em paralelo. | Opcional | 10 |
deleteAfterProcess |
Se as entradas de fluxo devem ser excluídas após a execução da função. | Opcional | false |
Configuração
A tabela a seguir explica as propriedades de configuração de vinculação definidas no arquivo function.json.
| function.json Propriedades | Descrição | Necessário | Predefinição |
|---|---|---|---|
type |
Sim | ||
deleteAfterProcess |
Opcional | false |
|
connection |
O nome da definição application que contém o connection string de cache, tais como: <cacheName>.redis.cache.windows.net:6380,password... |
Sim | |
key |
A chave para ler. | Sim | |
pollingIntervalInMs |
Com que frequência sondar Redis em milissegundos. | Opcional | 1000 |
messagesPerWorker |
(facultativo) O número de mensagens que cada trabalhador de funções deve processar. Usado para determinar quantos trabalhadores a função deve escalar | Opcional | 100 |
count |
Número de entradas para ler do Redis ao mesmo tempo. Estes são processados em paralelo. | Opcional | 10 |
name |
Sim | ||
direction |
Sim |
Consulte a seção Exemplo para obter exemplos completos.
Utilização
A Função RedisStreamTrigger Azure lê novas entradas de um fluxo e apresenta essas entradas à função.
O gatilho sonda Redis em um intervalo fixo configurável e usa XREADGROUP para ler elementos do fluxo.
O grupo consumidor para todas as instâncias de uma função é o nome da função, ou seja, SimpleStreamTrigger para a amostra StreamTrigger.
Cada instância de funções usa o WEBSITE_INSTANCE_ID ou gera um GUID aleatório para usar como seu nome de consumidor dentro do grupo para garantir que as instâncias dimensionadas da função não leiam as mesmas mensagens do fluxo.
| Tipo | Descrição |
|---|---|
byte[] |
A mensagem do canal. |
string |
A mensagem do canal. |
Custom |
O gatilho utiliza a serialização Json.NET para mapear a mensagem do canal de um string para um tipo personalizado. |