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.

Example

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

Execution model Description
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 Příručce pro spouštění funkcí Azure Functions jazyka C# v izolovaném pracovním modelu.
In-process model 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 jazyka C# pomocí Azure Functions.
[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 };
    }
});

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

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

For more information about function.json file properties, see the Configuration section.

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

Attributes

In the in-process model, use the DaprServiceInvocationTrigger to trigger a Dapr service invocation binding, which supports the following properties.

Parameter Description
MethodName Optional. Název metody, která má volající Dapr použít. Pokud není zadán, název funkce se použije jako název metody.

Annotations

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

Element Description
methodName Název metody.

Configuration

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

Property Description
type Musí být nastavena na daprServiceInvocationTrigger.
name 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.

function.json property Description
type Musí být nastavena na daprServiceInvocationTrigger.
name 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.

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

See the Example section for complete examples.

Usage

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
    

Next steps

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