RedisStreamTrigger para Azure Functions
O RedisStreamTrigger
lê novas entradas de um fluxo e apresenta esses elementos para a função.
Escalão de serviço | Básica | Standard, Premium | Empresa, Enterprise Flash |
---|---|---|---|
Fluxos | Sim | Sim | Sim |
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.
Modelo de execução | Description |
---|---|
Modelo de trabalhador isolado | Seu código de função é executado em um processo de trabalho .NET separado. Use com versões suportadas do .NET e .NET Framework. Para saber mais, consulte Desenvolver funções de processo de trabalho isoladas do .NET. |
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 LTS (Long Term Support) do .NET. Para saber mais, consulte Desenvolver funções de biblioteca de classes .NET. |
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 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.
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 | Description | 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. | 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 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. | 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 | Description | Necessário | Predefinição |
---|---|---|---|
type |
Sim | ||
deleteAfterProcess |
Opcional | false |
|
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 |
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 RedisStreamTrigger
Função do Azure lê novas entradas de um fluxo e exibe essas entradas para a função.
O gatilho sonda Redis em um intervalo fixo configurável e usa XREADGROUP
para ler elementos do fluxo.
O grupo de consumidores para todas as instâncias de uma função é o nome da função, ou seja, SimpleStreamTrigger
para o exemplo 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 | 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. |