Share via


Dapr-indatabindningsutlösare för Azure Functions

Viktigt!

Dapr-tillägget för Azure Functions är för närvarande i förhandsversion och stöds endast i Azure Container Apps-miljöer.

Azure Functions kan utlösas på en Dapr-indatabindning med hjälp av följande Dapr-händelser.

Information om installation och konfiguration av Dapr-tillägget finns i översikten över Dapr-tillägget.

Exempel

En C#-funktion kan skapas med något av följande C#-lägen:

Körningsmodell beskrivning
Isolerad arbetsmodell Funktionskoden körs i en separat .NET-arbetsprocess. Använd med versioner av .NET och .NET Framework som stöds. Mer information finns i Utveckla .NET-isolerade arbetsprocessfunktioner.
Processmodell Funktionskoden körs i samma process som Functions-värdprocessen. Stöder endast LTS-versioner (Long Term Support) av .NET. Mer information finns i Utveckla .NET-klassbiblioteksfunktioner.
[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}");
}

Här är Java-koden för Dapr-indatabindningsutlösaren:

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

Använd - app objektet för att registrera 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)
    }
});

I följande exempel visas Dapr-utlösare i en function.json fil och PowerShell-kod som använder dessa bindningar.

Här är filen function.json för daprBindingTrigger:

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

Mer information om function.json filegenskaper finns i avsnittet Konfiguration .

I kod:

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"

I följande exempel visas en Dapr-indatabindningsutlösare som använder programmeringsmodellen v2 Python. Så här använder daprBinding du i din Python-funktionsappkod:

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)

Attribut

I den processbaserade modellen använder du DaprBindingTrigger för att utlösa en Dapr-indatabindning, som stöder följande egenskaper.

Parameter Description
BindingName Namnet på Dapr-utlösaren. Om det inte anges används namnet på funktionen som utlösarnamn.

Kommentarer

Med anteckningen DaprBindingTrigger kan du skapa en funktion som utlöses av bindningskomponenten som du skapade.

Element Description
bindingName Namnet på Dapr-bindningen.

Konfiguration

I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i koden.

Property beskrivning
bindingName Namnet på bindningen.

I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i function.json-filen.

function.json egenskap beskrivning
bindingName Namnet på bindningen.

I följande tabell beskrivs bindningskonfigurationsegenskaperna för @dapp.dapr_binding_trigger som du anger i Python-koden.

Property beskrivning
binding_name Namnet på bindningen.

Se avsnittet Exempel för fullständiga exempel.

Användning

Om du vill använda Dapr-indatabindningsutlösaren börjar du med att konfigurera en Dapr-indatabindningskomponent. Du kan lära dig mer om vilken komponent som ska användas och hur du konfigurerar den i den officiella Dapr-dokumentationen.

Om du vill använda daprBindingTrigger i Python v2 konfigurerar du projektet med rätt beroenden.

  1. Skapa och aktivera en virtuell miljö.

  2. requirements.text Lägg till följande rad i filen:

    azure-functions==1.18.0b3
    
  3. Installera Python-biblioteket i terminalen.

    pip install -r .\requirements.txt
    
  4. local.setting.json Ändra filen med följande konfiguration:

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

Nästa steg

Läs mer om anrop av Dapr-tjänsten.