共用方式為


適用於 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 套件,將擴充功能新增至您的專案。

安裝搭售方案

若要能夠在應用程式中使用這個繫結延伸模組,請確定專案根目錄中的 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 觸發程式和系結時,讓函式在進階方案上正確調整規模,您必須啟用運行時間調整監視。

  1. 在 Azure 入口網站的函式應用程式中,選取 [ 組態]。

  2. 在 [ 函式運行時間設定 ] 索引標籤上,針對 [ 運行時間調整監視],選取 [ 開啟]。

    啟用運行時間調整的 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

下一步