Trigger di binding di input Dapr per Funzioni di Azure

Funzioni di Azure può essere attivato in un'associazione di input Dapr usando gli eventi Dapr seguenti.

Per informazioni sull'installazione e sulla configurazione dell'estensione Dapr, vedere panoramica dell'estensione Dapr.

Esempio

È possibile creare una funzione C# usando una delle modalità C# seguenti:

Modello di esecuzione Descrizione
Modello di lavoro isolato Il codice della funzione viene eseguito in un processo di lavoro .NET separato. Usare con le versioni supportate di .NET e .NET Framework. Per altre informazioni, vedere Sviluppare funzioni di processo di lavoro isolato .NET.
Modello di processo Il codice della funzione viene eseguito nello stesso processo del processo host di Funzioni. Supporta solo versioni LTS (Long Term Support) di .NET. Per altre informazioni, vedere Sviluppare funzioni della libreria di classi .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}");
}

Ecco il codice Java per il trigger di associazione di input Dapr:

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

Utilizzare l'oggetto app per registrare il 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)
    }
});

L'esempio seguente mostra i trigger Dapr in un file di function.json e nel codice di PowerShell che usa tali associazioni.

Ecco il file function.json per daprBindingTrigger:

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

Per altre informazioni sulle proprietà dei file function.json, vedere la sezione configurazione.

Nel codice:

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"

L'esempio seguente illustra un trigger di associazione di input Dapr, che usa il modello di programmazione Python v2. Per usare daprBinding nel codice dell'app per le funzioni Python:

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)

Attributi

Nel modello in-process usare il DaprBindingTrigger per attivare un'associazione di input Dapr, che supporta le proprietà seguenti.

Parametro Descrizione
BindingName Nome del trigger Dapr. Se non specificato, il nome della funzione viene usato come nome del trigger.

Annotazioni

L'annotazione DaprBindingTrigger consente di creare una funzione che viene attivata dal componente di associazione creato.

Elemento Descrizione
bindingName Nome dell'associazione Dapr.

Impostazione

Nella tabella seguente vengono illustrate le proprietà di configurazione dell'associazione impostate nel codice.

Proprietà Descrizione
bindingName Nome dell'associazione.

Nella tabella seguente sono illustrate le proprietà di configurazione dell'associazione impostate nel file function.json.

Proprietà di function.json Descrizione
bindingName Nome dell'associazione.

La tabella seguente illustra le proprietà di configurazione dell'associazione per @dapp.dapr_binding_trigger impostate nel codice Python.

Proprietà Descrizione
binding_name Nome dell'associazione.

Per esempi completi, vedere la sezione di esempio.

Utilizzo

Per usare il trigger di associazione di input Dapr, iniziare configurando un componente di associazione di input Dapr. Per altre informazioni sul componente da usare e su come configurarlo, vedere la documentazione ufficiale di Dapr.

Per usare daprBindingTrigger in Python v2, configurare il progetto con le dipendenze corrette.

  1. Creare e attivare un ambiente virtuale.

  2. Nel file requirements.text aggiungere la riga seguente:

    azure-functions==1.18.0b3
    
  3. Nel terminale installare la libreria Python.

    pip install -r .\requirements.txt
    
  4. Modificare il file local.setting.json con la configurazione seguente:

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

Passaggi successivi

Altre informazioni sulla chiamata al servizio Dapr.