分享方式:


適用於 Azure Functions 的 Dapr 輸入繫結觸發程序

可以使用下列 Dapr 事件,在 Dapr 輸入繫結上觸發 Azure Functions。

如需 Dapr 延伸模組的安裝和設定詳細資料,請參閱 Dapr 延伸模組概觀

範例

您可以使用下列其中一種 C# 模式來建立 C# 函式:

執行模型 描述
隔離式背景工作模型 您的函數程式碼在個別的 .NET 背景工作處理序中執行。 搭配支援的 .NET 和 .NET Framework 版本使用。 若要深入了解,請參閱開發 .NET 隔離式背景工作處理序函數
同處理序模型 您的函數程式碼執行的處理序與 Functions 主機處理序相同。 僅支援長期支援 (LTS) 的 .NET 版本。 若要深入了解,請參閱開發 .NET 類別庫函數
[FunctionName("ConsumeMessageFromKafka")]
public static void Run(
    // Note: the value of BindingName must match the binding name in components/kafka-bindings.yaml
    [DaprBindingTrigger(BindingName = "%KafkaBindingName%")] JObject triggerData,
    ILogger log)
{
    log.LogInformation("Hello from Kafka!");
    log.LogInformation($"Trigger data: {triggerData}");
}

以下是 Dapr 輸入繫結觸發程序的 Java 程式碼:

@FunctionName("ConsumeMessageFromKafka")
public String run(
        @DaprBindingTrigger(
            bindingName = "%KafkaBindingName%")
)

使用 app 物件來註冊 daprBindingTrigger

const { app, trigger } = require('@azure/functions');

app.generic('ConsumeMessageFromKafka', {
    trigger: trigger.generic({
        type: 'daprBindingTrigger',
        bindingName: "%KafkaBindingName%",
        name: "triggerData"
    }),
    handler: async (request, context) => {
        context.log("Node function processed a ConsumeMessageFromKafka request from the Dapr Runtime.");
        context.log(context.triggerMetadata.triggerData)
    }
});

下列範例顯示 function.json 檔案中的 Dapr 觸發程序,以及使用這些繫結的 PowerShell 程式碼。

以下是 daprBindingTriggerfunction.json 檔案:

{
  "bindings": [
    {
      "type": "daprBindingTrigger",
      "bindingName": "%KafkaBindingName%",
      "name": "triggerData",
      "direction": "in"
    }
  ]
}

如需 function.json 檔案屬性的詳細資訊,請參閱設定一節。

程式碼:

using namespace System
using namespace Microsoft.Azure.WebJobs
using namespace Microsoft.Extensions.Logging
using namespace Microsoft.Azure.WebJobs.Extensions.Dapr
using namespace Newtonsoft.Json.Linq

param (
    $triggerData
)

Write-Host "PowerShell function processed a ConsumeMessageFromKafka request from the Dapr Runtime."

$jsonString = $triggerData | ConvertTo-Json

Write-Host "Trigger data: $jsonString"

下列範例示範使用 v2 Python 程式設計模型的 Dapr 輸入繫結觸發程序。 若要在您的 Python 函式應用程式程式碼中使用 daprBinding

import logging
import json
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="ConsumeMessageFromKafka")
@app.dapr_binding_trigger(arg_name="triggerData", binding_name="%KafkaBindingName%")
def main(triggerData: str) -> None:
    logging.info('Python function processed a ConsumeMessageFromKafka request from the Dapr Runtime.')
    logging.info('Trigger data: ' + triggerData)

屬性

同處理模型中,使用 DaprBindingTrigger 來觸發支援下列屬性的 Dapr 輸入繫結。

參數 描述
BindingName Dapr 觸發程序的名稱。 如果未指定,會使用函式的名稱作為觸發程序名稱。

註釋

DaprBindingTrigger 註釋可讓您建立由您所建立之繫結元件觸發的函式。

元素 描述
bindingName Dapr 繫結的名稱。

組態

下表說明您在程式碼中設定的繫結設定屬性。

屬性 說明
bindingName 繫結的名稱。

下表說明您在 function.json 檔案中設定的繫結設定屬性。

function.json 屬性 描述
bindingName 繫結的名稱。

下表說明您在 Python 程式碼中設定的 @dapp.dapr_binding_trigger 繫結組態屬性。

屬性 說明
binding_name 繫結的名稱。

如需完整範例,請參閱範例一節。

使用方式

若要使用 Dapr 輸入繫結觸發程序,請先設定 Dapr 輸入繫結元件。 您可以在官方 Dapr 文件中深入了解要使用哪個元件,以及如何進行設定。

若要在 Python v2 中使用 daprBindingTrigger,請設定您的專案使其具備正確的相依性。

  1. 建立並啟用虛擬環境

  2. requirements.text 檔案中新增以下這一行:

    azure-functions==1.18.0b3
    
  3. 在終端機中,安裝 Python 程式庫。

    pip install -r .\requirements.txt
    
  4. 使用下列組態修改您的 local.setting.json 檔案:

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

下一步

深入了解 Dapr 服務叫用。