適用於 Azure Functions 的 Kafka 擴充功能可讓您使用輸出系結,將值寫出 Apache Kafka 主題。 您也可以使用觸發程式來叫用函式,以回應Kafka主題中的訊息。
重要
Kafka 系結僅適用於彈性進階方案和專用 (App Service) 方案中的 Functions。 只有 3.x 版和更新版本的 Functions 運行時間才支援它們。
| 動作 | 類型 |
|---|---|
| 根據新的 Kafka 事件執行函式。 | 觸發程序 |
| 寫入 Kafka 事件數據流。 | 輸出繫結 |
安裝擴充功能
您安裝的延伸模組 NuGet 套件取決於您在函式應用程式中使用的 C# 模式:
函式會在隔離的 C# 背景工作進程中執行。 若要深入瞭解,請參閱 在隔離背景工作程序中執行 C# Azure Functions 的指南。
藉由安裝此 NuGet 套件,將擴充功能新增至您的專案。
安裝搭售方案
若要能夠在應用程式中使用這個繫結延伸模組,請確定專案根目錄中的 host.json 檔案包含下列 extensionBundle 參考:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
在此範例中, version 的 [4.0.0, 5.0.0) 值指示 Functions 主機使用至少 4.0.0 但小於 5.0.0的套件版本,其中包括 4.x 的所有潛在版本。 此表示法可有效地在 v4.x 擴充功能套件組合的最新可用次要版本上維護您的應用程式。
可能的話,您應該使用最新的延伸套件組合主要版本,並允許執行階段自動維護最新的次要版本。 您可以在 延伸套件組合發行頁面上檢視最新套件組合的內容。 如需詳細資訊,請參閱 Azure Functions 延伸模組套件組合。
啟用運行時間調整
若要在使用 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 訂閱者會暫停,直到函式趕上為止。 |
| 最大批量大小 | 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 |