Freigeben über


Ü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. Auslösen
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.

  1. Wählen Sie im Azure-Portal in Ihrer Funktions-App " Konfiguration" aus.

  2. Wählen Sie auf der Registerkarte "Funktionslaufzeiteinstellungen " für die Skalierungsüberwachung zur Laufzeitdie Option "Ein" aus.

    Screenshot des Azure-Portalbereichs zum Aktivieren der Laufzeitskalierung.

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 type BESCHREIBUNG
ChannelFullRetryIntervalInMs 50 Auslöser 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 Auslöser Maximale Batchgröße beim Aufrufen einer durch Kafka ausgelösten Funktion.
SubscriberIntervalInSeconds 1 Auslöser 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 Auslöser auto.commit.interval.ms
AutoOffsetReset Auslöser auto.offset.reset
FetchMaxBytes Auslöser fetch.max.bytes
LibkafkaDebug Beide debug
MaxPartitionFetchBytes Auslöser max.partition.fetch.bytes
MaxPollIntervalMs Auslöser max.poll.interval.ms
MetadataMaxAgeMs Beide metadata.max.age.ms
QueuedMinMessages Auslöser queued.min.messages
QueuedMaxMessagesKbytes Auslöser queued.max.messages.kbytes
Erneutes Verbinden vonBackoffMs Auslöser reconnect.backoff.max.ms
ReconnectBackoffMs Auslöser reconnect.backoff.max.ms
SessionTimeoutMs Auslöser session.timeout.ms
SocketKeepaliveEnable Beide socket.keepalive.enable
StatisticsIntervalMs Auslöser statistics.interval.ms

Nächste Schritte