Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
Example
En C#-funktion kan skapas med något av följande C#-lägen:
| Execution model | Description | 
|---|---|
| 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 Guide för att köra C# Azure Functions i den isolerade arbetsmodellen. | 
| In-process model | 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 C#-klassbiblioteksfunktioner med Hjälp av Azure Functions. | 
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: daprBindingOutput,
    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 };
    }
});
The following examples show Dapr triggers in a function.json file and PowerShell code that uses those bindings.
Here's the function.json file for daprBinding:
{
  "bindings": 
    {
      "type": "daprBinding",
      "direction": "out",
      "bindingName": "%KafkaBindingName%",
      "operation": "create",
      "name": "messages"
    }
}
For more information about function.json file properties, see the Configuration section.
In code:
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'))
Attributes
In the in-process model, use the DaprBinding to define a Dapr binding output binding, which supports these parameters:
| Parameter | Description | Kan skickas via attribut | Kan skickas via RequestBody | 
|---|---|---|---|
| BindingName | Namnet på Dapr-bindningen. | ✔️ | ✔️ | 
| Operation | Den konfigurerade bindningsåtgärden. | ✔️ | ✔️ | 
| Metadata | Metadatanamnområdet. | ❌ | ✔️ | 
| Data | Required. Data för bindningsåtgärden. | ❌ | ✔️ | 
Annotations
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. | ✔️ | ✔️ | 
| output | Den konfigurerade bindningsåtgärden. | ✔️ | ✔️ | 
| metadata | Metadatanamnområdet. | ❌ | ✔️ | 
| data | Required. Data för bindningsåtgärden. | ❌ | ✔️ | 
Configuration
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i koden.
| Property | Description | Kan skickas via attribut | Kan skickas via RequestBody | 
|---|---|---|---|
| bindingName | Namnet på bindningen. | ✔️ | ✔️ | 
| operation | Bindningsåtgärden. | ✔️ | ✔️ | 
| metadata | Metadatanamnområdet. | ❌ | ✔️ | 
| data | Required. Data för bindningsåtgärden. | ❌ | ✔️ | 
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i function.json-filen.
| function.json property | Description | Kan skickas via attribut | Kan skickas via RequestBody | 
|---|---|---|---|
| bindingName | Namnet på bindningen. | ✔️ | ✔️ | 
| operation | Bindningsåtgärden. | ✔️ | ✔️ | 
| metadata | Metadatanamnområdet. | ❌ | ✔️ | 
| data | Required. 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 | Description | Kan skickas via attribut | Kan skickas via RequestBody | 
|---|---|---|---|
| binding_name | Namnet på bindningshändelsen. | ✔️ | ✔️ | 
| operation | Bindningsåtgärdens namn/identifierare. | ✔️ | ✔️ | 
| metadata | Metadatanamnområdet. | ❌ | ✔️ | 
| data | Required. Data för bindningsåtgärden. | ❌ | ✔️ | 
Om egenskaper definieras i både Attribut och RequestBodyges prioritet till data som anges i RequestBody.
See the Example section for complete examples.
Usage
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.
- Specifikationer för dapr-utdatabindningskomponent
- Anvisningar: Använda utdatabindningar för att interagera med externa resurser
Om du vill använda daprBinding i Python v2 konfigurerar du projektet med rätt beroenden.
- requirements.textLägg till följande rad i filen:- azure-functions==1.18.0b3
- Installera Python-biblioteket i terminalen. - pip install -r .\requirements.txt
- local.setting.jsonÄndra filen med följande konfiguration:- "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1