分享方式:


適用於 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 入口網站 的函式應用程式中,選擇 [組態],然後在 [函式運行時間設定] 索引標籤上,將 [運行時間規模監視] 轉換成 [開啟]。

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

下一步