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