Share via


Dapr-Eingabebindungsauslöser für Azure Functions

Wichtig

Die Dapr-Erweiterung für Azure Functions befindet sich derzeit in der Vorschau und wird nur in Azure Container Apps-Umgebungen unterstützt.

Azure Functions können mithilfe der folgenden Dapr-Ereignisse für eine Dapr-Eingabebindung ausgelöst werden.

Informationen zu Setup- und Konfigurationsdetails der Dapr-Erweiterung finden Sie in der Dapr-Erweiterungsübersicht.

Beispiel

Eine C#-Funktion kann mit einem der folgenden C#-Modi erstellt werden:

Ausführungsmodell Beschreibung
Isoliertes Workermodell Ihr Funktionscode wird in einem separaten .NET-Workerprozess ausgeführt. Verwenden Sie dazu unterstützte Versionen von .NET und .NET Framework. Weitere Informationen finden Sie unter Entwickeln von isolierten .NET-Workerprozessfunktionen.
In-Process-Modell Ihr Funktionscode wird im gleichen Prozess wie der Functions-Hostprozess ausgeführt. Unterstützt nur LTS-Versionen (Long Term Support) von .NET. Weitere Informationen finden Sie unter Entwickeln von .NET-Klassenbibliotheksfunktionen.
[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}");
}

Im Folgenden sehen Sie den Java-Code für den Dapr-Eingabebindungsauslöser:

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

Verwenden Sie das app Objekt, um folgendes daprBindingTriggerzu registrieren:

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)
    }
});

Das folgende Beispiel zeigt Dapr-Trigger in einer function.json-Datei und PowerShell-Code, der diese Bindungen verwendet.

Hier sehen Sie die function.json-Datei für daprBindingTrigger:

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

Weitere Informationen zu den Dateieigenschaften von function.json finden Sie im Abschnitt Konfiguration.

In Code:

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"

Das folgende Beispiel zeigt einen Dapr-Einbindungsauslöser, der das v2 Python-Programmiermodell verwendet. So verwenden Sie die daprBinding in Ihrem Python-Funktions-App-Code:

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)

Attribute

Verwenden Sie im In-Process-Modelldie DaprBindingTrigger, um eine Dapr-Eingabebindung auszulösen, die die folgenden Eigenschaften unterstützt.

Parameter Beschreibung
BindingName Der Name des Dapr-Triggers. Falls nicht angegeben, wird der Name der Funktion als Auslösername verwendet.

Anmerkungen

Mit der DaprBindingTrigger-Anmerkung können Sie eine Funktion erstellen, die von der von Ihnen erstellten Bindungskomponente ausgelöst wird.

Element Beschreibung
bindingName Der Name der Dapr-Bindung.

Konfiguration

In der folgenden Tabelle werden die Bindungskonfigurationseigenschaften erläutert, die Sie im Code festlegen.

Eigenschaft Beschreibung
bindingName Der Name der Bindung.

Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json festlegen.

function.json-Eigenschaft Beschreibung
bindingName Der Name der Bindung.

Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften für @dapp.dapr_binding_trigger, die Sie im Python-Code festlegen.

Eigenschaft Beschreibung
binding_name Der Name der Bindung.

Vollständige Beispiele finden Sie im Abschnitt Beispiele.

Verwendung

Um den Dapr-Einbindungsauslöser zu verwenden, richten Sie zunächst eine Dapr-Eingabebindungskomponente ein. In der offiziellen Dapr-Dokumentation erfahren Sie mehr darüber, welche Komponente Sie verwenden sollten und wie Sie diese einrichten können.

Um daprBindingTrigger in Python v2 zu verwenden, richten Sie Ihr Projekt mit den richtigen Abhängigkeiten ein.

  1. Erstellen und Aktivieren einer virtuellen Umgebung

  2. Fügen Sie in Ihrer requirements.text-Datei die folgende Zeile hinzu:

    azure-functions==1.18.0b3
    
  3. Installieren Sie im Terminal die Python-Bibliothek.

    pip install -r .\requirements.txt
    
  4. Ändern Sie ihre local.setting.json-Datei mit der folgenden Konfiguration:

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

Nächste Schritte

Erfahren Sie mehr über den Aufruf des Dapr-Dienstes.