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.
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 |