Sdílet prostřednictvím


Trigger volání služby Dapr pro Azure Functions

Azure Functions je možné aktivovat při vyvolání služby Dapr pomocí následujících událostí Dapr.

Informace o nastavení a konfiguraci rozšíření Dapr najdete v přehledu rozšíření Dapr.

Příklad

Funkci jazyka C# je možné vytvořit pomocí jednoho z následujících režimů jazyka C#:

Model spouštění Popis
Izolovaný model pracovního procesu Kód funkce se spouští v samostatném pracovním procesu .NET. Používá se s podporovanými verzemi rozhraní .NET a .NET Framework. Další informace najdete v tématu Vývoj funkcí izolovaného pracovního procesu .NET.
Model v procesu Kód funkce se spouští ve stejném procesu jako hostitelský proces služby Functions. Podporuje pouze verze dlouhodobé podpory (LTS) rozhraní .NET. Další informace najdete v tématu Vývoj funkcí knihovny tříd .NET.
[FunctionName("CreateNewOrder")]
public static void Run(
    [DaprServiceInvocationTrigger] JObject payload,
    [DaprState("%StateStoreName%", Key = "order")] out JToken order,
    ILogger log)
{
    log.LogInformation("C# function processed a CreateNewOrder request from the Dapr Runtime.");

    // payload must be of the format { "data": { "value": "some value" } }
    order = payload["data"];
}

Tady je kód Java pro trigger volání služby Dapr:

@FunctionName("CreateNewOrder")
public String run(
        @DaprServiceInvocationTrigger(
            methodName = "CreateNewOrder") 
)

Pomocí objektu app zaregistrujte daprInvokeOutput:

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

app.generic('InvokeOutputBinding', {
    trigger: trigger.generic({
        type: 'httpTrigger',
        authLevel: 'anonymous',
        methods: ['POST'],
        route: "invoke/{appId}/{methodName}",
        name: "req"
    }),
    return: daprInvokeOutput,
    handler: async (request, context) => {
        context.log("Node HTTP trigger function processed a request.");

        const payload = await request.text();
        context.log(JSON.stringify(payload));

        return { body: payload };
    }
});

Následující příklady ukazují triggery Dapr v souboru function.json a kódu PowerShellu, který tyto vazby používá.

Tady je soubor function.json pro daprServiceInvocationTrigger:

{
  "bindings": [
    {
      "type": "daprServiceInvocationTrigger",
      "name": "payload",
      "direction": "in"
    }
  ]
}

Další informace o function.json vlastnosti souboru naleznete v části Konfigurace .

V kódu:

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 (
    $payload
)

# C# function processed a CreateNewOrder request from the Dapr Runtime.
Write-Host "PowerShell function processed a CreateNewOrder request from the Dapr Runtime."

# Payload must be of the format { "data": { "value": "some value" } }

# Convert the object to a JSON-formatted string with ConvertTo-Json
$jsonString = $payload| ConvertTo-Json

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name order -Value $payload["data"]

Následující příklad ukazuje trigger volání služby Dapr, který používá programovací model Pythonu v2. Použití kódu aplikace funkcí Pythonu daprServiceInvocationTrigger :

import logging
import json
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="RetrieveOrder")
@app.dapr_service_invocation_trigger(arg_name="payload", method_name="RetrieveOrder")
@app.dapr_state_input(arg_name="data", state_store="statestore", key="order")
def main(payload, data: str) :
    # Function should be invoked with this command: dapr invoke --app-id functionapp --method RetrieveOrder  --data '{}'
    logging.info('Python function processed a RetrieveOrder request from the Dapr Runtime.')
    logging.info(data)

Atributy

V modelu v procesu použijte DaprServiceInvocationTrigger k aktivaci vazby volání služby Dapr, která podporuje následující vlastnosti.

Parametr Popis
Methodname Nepovinné. Název metody, která má volající Dapr použít. Pokud není zadán, název funkce se použije jako název metody.

Poznámky

Poznámka DaprServiceInvocationTrigger umožňuje vytvořit funkci, která se vyvolá modulem runtime Dapr.

Element (Prvek) Popis
Methodname Název metody.

Konfigurace

Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v kódu.

Vlastnost Popis
type Musí být nastavena na daprServiceInvocationTriggerhodnotu .
Jméno Název proměnné, která představuje data Dapr v kódu funkce.

Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v souboru function.json.

vlastnost function.json Popis
type Musí být nastavena na daprServiceInvocationTriggerhodnotu .
Jméno Název proměnné, která představuje data Dapr v kódu funkce.

Následující tabulka vysvětluje vlastnosti konfigurace vazby, @dapp.dapr_service_invocation_trigger které jste nastavili v kódu Pythonu.

Vlastnost Popis
method_name Název proměnné, která představuje data Dapr.

Kompletní příklady najdete v části Příklad.

Využití

Pokud chcete použít trigger volání služby Dapr, přečtěte si další informace o tom, které komponenty se mají použít s triggerem volání služby a jak je nastavit v oficiální dokumentaci k Dapr.

Pokud chcete použít python daprServiceInvocationTrigger v2, nastavte projekt se správnými závislostmi.

  1. Vytvoření a aktivace virtuálního prostředí

  2. requirements.text Do souboru přidejte následující řádek:

    azure-functions==1.18.0b3
    
  3. V terminálu nainstalujte knihovnu Pythonu.

    pip install -r .\requirements.txt
    
  4. Upravte local.setting.json soubor pomocí následující konfigurace:

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

Další kroky

Přečtěte si další informace o vyvolání služby Dapr.