Dela via


Dapr Binding-utdatabindning för Azure Functions

Med Dapr-utdatabindningen kan du skicka ett värde till en Dapr-utdatabindning under en funktionskörning.

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.

I följande exempel visas hur du använder en Dapr-tjänstanropsutlösare och en Dapr-utdatabindning för att läsa och bearbeta en bindningsbegäran.

[FunctionName("SendMessageToKafka")]
public static async Task Run(
    [DaprServiceInvocationTrigger] JObject payload,
    [DaprBinding(BindingName = "%KafkaBindingName%", Operation = "create")] IAsyncCollector<object> messages,
    ILogger log)
{
    log.LogInformation("C#  function processed a SendMessageToKafka request.");
    await messages.AddAsync(payload);
}

I följande exempel skapas en "SendMessagetoKafka" funktion med bindningen DaprBindingOutput med DaprServiceInvocationTrigger:

@FunctionName("SendMessageToKafka")
public String run(
        @DaprServiceInvocationTrigger(
            methodName = "SendMessageToKafka") 
        String payload,
        @DaprBindingOutput(
            bindingName = "%KafkaBindingName%", 
            operation = "create")
        OutputBinding<String> product,
        final ExecutionContext context) {
    context.getLogger().info("Java  function processed a SendMessageToKafka request.");
    product.setValue(payload);

    return payload;
}

I följande exempel paras Dapr-utdatabindningen ihop med Dapr-utlösaren för att anropa utdata, som registreras av app objektet:

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

app.generic('SendMessageToKafka', {
    trigger: trigger.generic({
        type: 'daprServiceInvocationTrigger',
        name: "payload"
    }),
    return: daprBindingOuput,
    handler: async (request, context) => {
        context.log("Node function processed a SendMessageToKafka request from the Dapr Runtime.");
        context.log(context.triggerMetadata.payload)

        return { "data": context.triggerMetadata.payload };
    }
});

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 daprBinding:

{
  "bindings": 
    {
      "type": "daprBinding",
      "direction": "out",
      "bindingName": "%KafkaBindingName%",
      "operation": "create",
      "name": "messages"
    }
}

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

I kod:

using namespace System.Net

# Input bindings are passed in via param block.
param($req, $TriggerMetadata)

Write-Host "Powershell SendMessageToKafka processed a request."

$invoke_output_binding_req_body = @{
    "data" = $req
}

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name messages -Value $invoke_output_binding_req_body

I följande exempel visas en Dapr Binding-utdatabindning som använder programmeringsmodellen v2 Python. Så här använder @dapp.dapr_binding_output du i din Python-funktionsappkod:

import logging
import json
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="SendMessageToKafka")
@app.dapr_service_invocation_trigger(arg_name="payload", method_name="SendMessageToKafka")
@app.dapr_binding_output(arg_name="messages", binding_name="%KafkaBindingName%", operation="create")
def main(payload: str, messages: func.Out[bytes]) -> None:
    logging.info('Python processed a SendMessageToKafka request from the Dapr Runtime.')
    messages.set(json.dumps({"data": payload}).encode('utf-8'))

Attribut

I den processbaserade modellen använder du DaprBinding för att definiera en Dapr-bindningsutdatabindning, som stöder följande parametrar:

Parameter Description Kan skickas via attribut Kan skickas via RequestBody
BindingName Namnet på Dapr-bindningen. ✔️ ✔️
Åtgärd Den konfigurerade bindningsåtgärden. ✔️ ✔️
Metadata Metadatanamnområdet. ✔️
Data Obligatoriskt. Data för bindningsåtgärden. ✔️

Kommentarer

Med anteckningen DaprBindingOutput kan du skapa en funktion som skickar en utdatabindning.

Element Description Kan skickas via attribut Kan skickas via RequestBody
bindingName Namnet på Dapr-bindningen. ✔️ ✔️
Produktionen Den konfigurerade bindningsåtgärden. ✔️ ✔️
metadata Metadatanamnområdet. ✔️
Data Obligatoriskt. Data för bindningsåtgärden. ✔️

Konfiguration

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

Property beskrivning Kan skickas via attribut Kan skickas via RequestBody
bindingName Namnet på bindningen. ✔️ ✔️
Drift Bindningsåtgärden. ✔️ ✔️
metadata Metadatanamnområdet. ✔️
Data Obligatoriskt. Data för bindningsåtgärden. ✔️

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

function.json egenskap beskrivning Kan skickas via attribut Kan skickas via RequestBody
bindingName Namnet på bindningen. ✔️ ✔️
Drift Bindningsåtgärden. ✔️ ✔️
metadata Metadatanamnområdet. ✔️
Data Obligatoriskt. Data för bindningsåtgärden. ✔️

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

Property beskrivning Kan skickas via attribut Kan skickas via RequestBody
binding_name Namnet på bindningshändelsen. ✔️ ✔️
Drift Bindningsåtgärdens namn/identifierare. ✔️ ✔️
metadata Metadatanamnområdet. ✔️
Data Obligatoriskt. Data för bindningsåtgärden. ✔️

Om egenskaper definieras i både Attribut och RequestBodyges prioritet till data som anges i RequestBody.

Se avsnittet Exempel för fullständiga exempel.

Användning

Om du vill använda Dapr-utdatabindningen börjar du med att konfigurera en Dapr-utdatabindningskomponent. 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 daprBinding 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.