Visão geral das ligações do Apache Kafka para o Azure Functions

A extensão Kafka para Azure Functions permite que você escreva valores em tópicos do Apache Kafka usando uma associação de saída. Você também pode usar um gatilho para invocar suas funções em resposta a mensagens em tópicos Kafka.

Importante

As ligações Kafka só estão disponíveis para Funções no plano Elastic Premium e no plano Dedicado (Serviço de Aplicativo). Eles só são suportados na versão 3.x e versão posterior do tempo de execução do Functions.

Ação Type
Execute uma função com base em um novo evento Kafka. Acionador
Escreva para o fluxo de eventos de Kafka. Vinculação de saída

Instalar a extensão

O pacote de extensão NuGet que você instala depende do modo C# que você está usando em seu aplicativo de função:

As funções são executadas em um processo de trabalho C# isolado. Para saber mais, consulte Guia para executar o C# Azure Functions em um processo de trabalho isolado.

Adicione a extensão ao seu projeto instalando este pacote NuGet.

Instalar pacote

A extensão Kafka faz parte de um pacote de extensão, que é especificado em seu arquivo de projeto host.json. Quando você cria um projeto destinado ao Functions versão 3.x ou posterior, você já deve ter esse pacote instalado. Para saber mais, consulte Pacote de extensão.

Habilitar o dimensionamento de tempo de execução

Para permitir que suas funções sejam dimensionadas corretamente no plano Premium ao usar gatilhos e ligações Kafka, você precisa habilitar o monitoramento da escala de tempo de execução.

No portal do Azure, em seu aplicativo de função, escolha Configuração e, na guia Configurações de tempo de execução da função, ative o monitoramento da escala de tempo de execução.

Captura de tela do painel do portal do Azure para habilitar o dimensionamento em tempo de execução.

host.json configurações

Esta seção descreve as definições de configuração disponíveis para essa associação nas versões 3.x e superiores. As configurações no arquivo host.json se aplicam a todas as funções em uma instância de aplicativo de função. Para obter mais informações sobre definições de configuração de aplicativo de função nas versões 3.x e versões posteriores, consulte a referência de host.json para o Azure Functions.

{
    "version": "2.0",
    "extensions": {
        "kafka": {
            "maxBatchSize": 64,
            "SubscriberIntervalInSeconds": 1,
            "ExecutorChannelCapacity": 1,
            "ChannelFullRetryIntervalInMs": 50
        }
    }
}

Property Predefinição Tipo Description
ChannelFullRetryIntervalInMs 50 Acionador Define o intervalo de repetição do assinante, em milissegundos, usado ao tentar adicionar itens a um canal na capacidade.
ExecutorChannelCapacity 1 Ambos Define a capacidade de mensagem do canal. Uma vez atingida a capacidade, o assinante Kafka faz uma pausa até que a função seja recuperada.
MaxBatchSize 64 Acionador Tamanho máximo do lote ao chamar uma função acionada por Kafka.
SubscriberIntervalInSeconds 1 Acionador Define a frequência mínima com que as mensagens recebidas são executadas, por função, em segundos. Apenas quando o volume de mensagens for inferior a MaxBatchSize / SubscriberIntervalInSeconds

As seguintes propriedades, que são herdadas da biblioteca de cliente Apache Kafka C/C++, também são suportadas na kafka seção de host.json, para gatilhos ou ligações de saída e gatilhos:

Property Aplica-se a librdkafka equivalente
AutoCommitIntervalMs Acionador auto.commit.interval.ms
AutoOffsetRedefinir Acionador auto.offset.reset
FetchMaxBytes Acionador fetch.max.bytes
LibkafkaDebug Ambos debug
MaxPartitionFetchBytes Acionador max.partition.fetch.bytes
MaxPollIntervalMs Acionador max.poll.interval.ms
MetadataMaxAgeMs Ambos metadata.max.age.ms
QueuedMinMessages Acionador queued.min.messages
QueuedMaxMessagesKbytes Acionador queued.max.messages.kbytes
ReconnectBackoffMs Acionador reconnect.backoff.max.ms
ReconnectBackoffMaxMs Acionador reconnect.backoff.max.ms
SessionTimeoutMs Acionador session.timeout.ms
SocketKeepaliveEnable Ambos socket.keepalive.enable
StatisticsIntervalMs Acionador statistics.interval.ms

Próximos passos