Übersicht über Apache Kafka-Bindungen für Azure Functions

Mit der Kafka-Erweiterung für Azure Functions können Sie Werte mithilfe einer Ausgabebindung in Apache Kafka-Themen schreiben. Sie können auch einen Trigger verwenden, um Ihre Funktionen als Reaktion auf Nachrichten in Kafka-Themen aufzurufen.

Wichtig

Kafka-Bindungen sind für Functions nur im Elastic Premium-Plan im Dedicated-Plan (App Service) verfügbar. Sie werden nur in Version 3.x und höher der Functions-Laufzeit unterstützt.

Aktion type
Ausführen einer Funktion basierend auf einem neuen Kafka-Ereignis. Trigger
Schreiben in den Kafka-Ereignisdatenstrom. Ausgabebindung

Installieren der Erweiterung

Das NuGet-Erweiterungspaket, das Sie installieren, hängt vom C#-Modus ab, den Sie in Ihrer Funktions-App verwenden:

Funktionen werden in einem isolierten C#-Workerprozess ausgeführt. Weitere Informationen finden Sie im Leitfaden zum Ausführen von Azure Functions (C#) in einem isolierten Workerprozess.

Fügen Sie ihrem Projekt die Erweiterung hinzu, indem Sie dieses NuGet-Paket installieren.

Installieren des Pakets

Die Kafka-Erweiterung ist Teil eines Erweiterungspakets, das in Ihrer Projektdatei „host.json“ angegeben wird. Wenn Sie ein Projekt für Functions Version 3.x oder höher erstellen, sollte dieses Paket bereits installiert sein. Weitere Informationen finden Sie unter Erweiterungspakete.

Aktivieren von Laufzeitskalierung

Damit Ihre Funktionen ordnungsgemäß im Premium-Plan skaliert werden können, wenn Sie Kafka-Trigger und -Bindungen verwenden, müssen Sie Überwachung der Laufzeitskalierung aktivieren.

Wählen Sie im Azure-Portal in Ihrer Funktions-App Konfiguration aus, und legen Sie auf der Registerkarte Funktionslaufzeiteinstellungen die Option Überwachung der Laufzeitskalierung auf Ein fest.

Screenshot: Azure-Portalbereich zum Aktivieren von Runtimeskalierung.

Einstellungen für „host.json“

In diesem Abschnitt werden die für diese Bindung in Version 3.x und höher verfügbaren Konfigurationseinstellungen beschrieben. Einstellungen in der Datei „host.json“ gelten für alle Funktionen in einer Funktions-App-Instanz. Weitere Informationen zu den Konfigurationseinstellungen für Funktions-Apps in Version 3.x und höher finden Sie unter host.json-Referenz für Azure Functions.

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

Eigenschaft Standard Typ BESCHREIBUNG
ChannelFullRetryIntervalInMs 50 Trigger Definiert das Wiederholungsintervall des Abonnenten in Millisekunden, das beim Hinzufügen von Elementen zu einem at-Kapazitätskanal verwendet wird.
ExecutorChannelCapacity 1 Beide Definiert die Kanalnachrichtenkapazität. Sobald die Kapazität erreicht ist, hält der Kafka-Abonnent an, bis die Funktion aufholt.
MaxBatchSize 64 Trigger Maximale Batchgröße beim Aufrufen einer durch Kafka ausgelösten Funktion.
SubscriberIntervalInSeconds 1 Trigger Definiert die Mindestfrequenz, mit der eingehende Nachrichten pro Funktion in Sekunden ausgeführt werden. Nur wenn das Nachrichtenvolume kleiner als MaxBatchSize / SubscriberIntervalInSeconds ist.

Die folgenden Eigenschaften, die von der Apache Kafka C/C++-Clientbibliothek geerbt werden, werden auch im Abschnitt kafka von „host.json“ unterstützt, entweder für Trigger oder sowohl für Ausgabebindungen als auch für Trigger:

Eigenschaft Gilt für librdkafka äquivalent
AutoCommitIntervalMs Trigger auto.commit.interval.ms
AutoOffsetReset Trigger auto.offset.reset
FetchMaxBytes Trigger fetch.max.bytes
LibkafkaDebug Beide debug
MaxPartitionFetchBytes Trigger max.partition.fetch.bytes
MaxPollIntervalMs Trigger max.poll.interval.ms
MetadataMaxAgeMs Beide metadata.max.age.ms
QueuedMinMessages Trigger queued.min.messages
QueuedMaxMessagesKbytes Trigger queued.max.messages.kbytes
ReconnectBackoffMs Trigger reconnect.backoff.max.ms
ReconnectBackoffMs Trigger reconnect.backoff.max.ms
SessionTimeoutMs Trigger session.timeout.ms
SocketKeepaliveEnable Beide socket.keepalive.enable
StatisticsIntervalMs Trigger statistics.interval.ms

Nächste Schritte