Panoramica delle associazioni Apache Kafka per Funzioni di Azure

L'estensione Kafka per Funzioni di Azure consente di scrivere valori negli argomenti apache Kafka usando un'associazione di output. È anche possibile usare un trigger per richiamare le funzioni in risposta ai messaggi negli argomenti Kafka.

Importante

Le associazioni Kafka sono disponibili solo per le funzioni nel piano Elastic Premium e dedicato (servizio app). Sono supportate solo nella versione 3.x e successiva del runtime di Funzioni.

Azione Type
Eseguire una funzione in base a un nuovo evento Kafka. Trigger
Scrivere nel flusso di eventi Kafka. Associazione di output

Installare l'estensione

Il pacchetto NuGet di estensione installato dipende dalla modalità C# usata nell'app per le funzioni:

Le funzioni sono eseguite in un processo di lavoro C# isolato. Per altre informazioni, vedere Guida per l'esecuzione di Funzioni di Azure C# in un processo di lavoro isolato.

Aggiungere l'estensione al progetto installando questo pacchetto NuGet.

Installare il bundle

L'estensione Kafka fa parte di un bundle di estensione, specificato nel file di progetto host.json. Quando si crea un progetto destinato a Funzioni versione 3.x o successiva, è necessario avere già installato questo bundle. Per altre informazioni, vedere bundle di estensioni.

Abilitare il ridimensionamento in fase di esecuzione

Per consentire alle funzioni di ridimensionare correttamente il piano Premium quando si usano trigger e associazioni Kafka, è necessario abilitare il monitoraggio della scalabilità di runtime.

Nella portale di Azure, nell'app per le funzioni scegliere Configurazione e nella scheda Impostazioni runtime funzione impostare Monitoraggio della scalabilità di runtime su .

Screenshot del pannello portale di Azure per abilitare il ridimensionamento in fase di esecuzione.

impostazioni host.json

Questa sezione descrive le impostazioni di configurazione disponibili per questa associazione nelle versioni 3.x e successive. Impostazioni nel file host.json si applicano a tutte le funzioni in un'istanza dell'app per le funzioni. Per altre informazioni sulle impostazioni di configurazione delle app per le funzioni nelle versioni 3.x e successive, vedere le informazioni di riferimento sulle host.json per Funzioni di Azure.

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

Proprietà Default Tipo Descrizione
ChannelFullRetryIntervalInMs 50 Trigger Definisce l'intervallo di ripetizione dei tentativi del sottoscrittore, espresso in millisecondi, usato quando si tenta di aggiungere elementi a un canale con capacità.
ExecutorChannelCapacity 1 Entrambi Definisce la capacità dei messaggi del canale. Una volta raggiunta la capacità, il sottoscrittore Kafka si sospende fino a quando la funzione non viene recuperata.
MaxBatchSize 64 Trigger Dimensioni massime del batch quando si chiama una funzione attivata da Kafka.
SubscriberIntervalInSeconds 1 Trigger Definisce la frequenza minima di esecuzione dei messaggi in ingresso, per funzione in secondi. Solo quando il volume del messaggio è minore di MaxBatchSize / SubscriberIntervalInSeconds

Le proprietà seguenti, ereditate dalla libreria client C/C++ di Apache Kafka, sono supportate anche nella kafka sezione di host.json, per trigger o entrambe le associazioni di output e trigger:

Proprietà Si applica a equivalente librdkafka
AutoCommitIntervalMs Trigger auto.commit.interval.ms
AutoOffsetReset Trigger auto.offset.reset
FetchMaxBytes Trigger fetch.max.bytes
LibkafkaDebug Entrambi debug
MaxPartitionFetchBytes Trigger max.partition.fetch.bytes
MaxPollIntervalMs Trigger max.poll.interval.ms
MetadataMaxAgeMs Entrambi metadata.max.age.ms
QueuedMinMessages Trigger queued.min.messages
QueuedMaxMessagesKbytes Trigger queued.max.messages.kbytes
RiconnetteReconnectBackoffMs Trigger reconnect.backoff.max.ms
ReconnectBackoffMaxMs Trigger reconnect.backoff.max.ms
SessionTimeoutMs Trigger session.timeout.ms
SocketKeepaliveEnable Entrambi socket.keepalive.enable
StatisticsIntervalMs Trigger statistics.interval.ms

Passaggi successivi