適用於 Azure Functions 的 Apache Kafka 系結概觀
適用於 Azure Functions 的 Kafka 擴充功能可讓您使用輸出系結,將值寫出 Apache Kafka 主題。 您也可以使用觸發程式來叫用函式,以回應Kafka主題中的訊息。
重要
Kafka 系結僅適用於彈性進階方案和專用 (App Service) 方案中的 Functions。 只有 3.x 版和更新版本的 Functions 運行時間才支援它們。
動作 | 類型 |
---|---|
根據新的 Kafka 事件執行函式。 | 觸發程序 |
寫入 Kafka 事件數據流。 | 輸出繫結 |
安裝擴充功能
您安裝的延伸模組 NuGet 套件取決於您在函式應用程式中使用的 C# 模式:
函式會在隔離的 C# 背景工作進程中執行。 若要深入瞭解,請參閱 在隔離背景工作程序中執行 C# Azure Functions 的指南。
藉由安裝此 NuGet 套件,將擴充功能新增至您的專案。
安裝搭售方案
Kafka 延伸模組是延伸模組套件組合的一部分,其指定於您的host.json項目檔中。 當您建立以 Functions 3.x 版或更新版本為目標的專案時,應該已安裝此套件組合。 若要深入瞭解,請參閱 延伸模組套件組合。
啟用運行時間調整
若要在使用 Kafka 觸發程式和系結時,讓函式在進階方案上正確調整規模,您必須啟用運行時間調整監視。
在 Azure 入口網站 的函式應用程式中,選擇 [組態],然後在 [函式運行時間設定] 索引標籤上,將 [運行時間規模監視] 轉換成 [開啟]。
host.json 設定
本節說明 3.x 版和更新版本中此系結可用的組態設定。 host.json檔案中的設定會套用至函式應用程式實例中的所有函式。 如需 3.x 版和更新版本中函式應用程式組態設定的詳細資訊,請參閱 Azure Functions 的host.json參考。
{
"version": "2.0",
"extensions": {
"kafka": {
"maxBatchSize": 64,
"SubscriberIntervalInSeconds": 1,
"ExecutorChannelCapacity": 1,
"ChannelFullRetryIntervalInMs": 50
}
}
}
屬性 | 預設 | 類型 | 描述 |
---|---|---|---|
ChannelFullRetryIntervalInMs | 50 | 觸發程序 | 定義訂閱者重試間隔,以毫秒為單位,在嘗試將專案新增至容量通道時使用。 |
ExecutorChannelCapacity | 1 | 兩者 | 定義通道訊息容量。 達到容量之後,Kafka 訂閱者會暫停,直到函式趕上為止。 |
MaxBatchSize | 64 | 觸發程序 | 呼叫 Kafka 觸發函式時的批次大小上限。 |
SubscriberIntervalInSeconds | 1 | 觸發程序 | 定義每個函式以秒為單位執行最小頻率傳入訊息。 只有當訊息磁碟區小於時 MaxBatchSize / SubscriberIntervalInSeconds |
下列屬性繼承自 Apache Kafka C/C++ 用戶端連結庫,在 host.json 一節中也支援 kafka
觸發程式或輸出系結和觸發程式:
屬性 | 適用於 | librdkafka 對等專案 |
---|---|---|
AutoCommitIntervalMs | 觸發程序 | auto.commit.interval.ms |
AutoOffsetReset | 觸發程序 | auto.offset.reset |
FetchMaxBytes | 觸發程序 | fetch.max.bytes |
LibkafkaDebug | 兩者 | debug |
MaxPartitionFetchBytes | 觸發程序 | max.partition.fetch.bytes |
MaxPollIntervalMs | 觸發程序 | max.poll.interval.ms |
MetadataMaxAgeMs | 兩者 | metadata.max.age.ms |
QueuedMinMessages | 觸發程序 | queued.min.messages |
QueuedMaxMessagesKbytes | 觸發程序 | queued.max.messages.kbytes |
ReconnectBackoffMs | 觸發程序 | reconnect.backoff.max.ms |
ReconnectBackoffMaxMs | 觸發程序 | reconnect.backoff.max.ms |
SessionTimeoutMs | 觸發程序 | session.timeout.ms |
SocketKeepaliveEnable | 兩者 | socket.keepalive.enable |
StatisticsIntervalMs | 觸發程序 | statistics.interval.ms |