Udostępnij za pośrednictwem


Wyzwalacz wywołania usługi Dapr dla usługi Azure Functions

Usługa Azure Functions może zostać wyzwolona w wywołaniu usługi Dapr przy użyciu następujących zdarzeń języka Dapr.

Aby uzyskać informacje na temat konfiguracji i szczegółów konfiguracji rozszerzenia Języka Dapr, zobacz Omówienie rozszerzenia Języka Dapr.

Przykład

Funkcję języka C# można utworzyć przy użyciu jednego z następujących trybów języka C#:

Model wykonania opis
Model izolowanego procesu roboczego Kod funkcji jest uruchamiany w osobnym procesie roboczym platformy .NET. Używaj z obsługiwanymi wersjami platform .NET i .NET Framework. Aby dowiedzieć się więcej, zobacz Develop .NET isolated worker process functions (Tworzenie izolowanych funkcji procesów roboczych platformy .NET).
Model w procesie Kod funkcji jest uruchamiany w tym samym procesie co proces hosta usługi Functions. Obsługuje tylko wersje long term support (LTS) platformy .NET. Aby dowiedzieć się więcej, zobacz Tworzenie funkcji biblioteki klas platformy .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"];
}

Oto kod Java wyzwalacza wywołania usługi Dapr:

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

Użyj obiektu , app aby zarejestrować obiekt 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 };
    }
});

W poniższych przykładach pokazano wyzwalacze języka Dapr w pliku function.json i kodzie programu PowerShell, który używa tych powiązań.

Oto plik function.json dla elementu daprServiceInvocationTrigger:

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

Aby uzyskać więcej informacji na temat function.json właściwości pliku, zobacz sekcję Konfiguracja.

W kodzie:

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"]

W poniższym przykładzie pokazano wyzwalacz wywołania usługi Dapr, który używa modelu programowania w języku Python w wersji 2. Aby użyć elementu daprServiceInvocationTrigger w kodzie aplikacji funkcji języka Python:

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)

Atrybuty

W modelu przetwarzania użyj DaprServiceInvocationTrigger polecenia , aby wyzwolić powiązanie wywołania usługi Dapr, które obsługuje następujące właściwości.

Parametr Opis
Methodname Opcjonalny. Nazwa metody, która powinna być używana przez obiekt wywołujący Dapr. Jeśli nie zostanie określona, nazwa funkcji jest używana jako nazwa metody.

Adnotacje

Adnotacja DaprServiceInvocationTrigger umożliwia utworzenie funkcji wywoływanej przez środowisko uruchomieniowe języka Dapr.

Element opis
Methodname Nazwa metody.

Konfigurowanie

W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w kodzie.

Właściwości Opis
type Musi być ustawiona wartość daprServiceInvocationTrigger.
name Nazwa zmiennej reprezentującej dane języka Dapr w kodzie funkcji.

W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json.

właściwość function.json opis
type Musi być ustawiona wartość daprServiceInvocationTrigger.
name Nazwa zmiennej reprezentującej dane języka Dapr w kodzie funkcji.

W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione @dapp.dapr_service_invocation_trigger w kodzie języka Python.

Właściwości opis
method_name Nazwa zmiennej reprezentującej dane dapr.

Zobacz sekcję Przykład, aby zapoznać się z kompletnymi przykładami.

Użycie

Aby użyć wyzwalacza wywołania usługi Dapr, dowiedz się więcej o składnikach, które mają być używane z wyzwalaczem wywołania usługi i jak je skonfigurować w oficjalnej dokumentacji języka Dapr.

Aby użyć elementu daprServiceInvocationTrigger w języku Python w wersji 2, skonfiguruj projekt przy użyciu poprawnych zależności.

  1. Tworzenie i aktywowanie środowiska wirtualnego.

  2. requirements.text W pliku dodaj następujący wiersz:

    azure-functions==1.18.0b3
    
  3. W terminalu zainstaluj bibliotekę języka Python.

    pip install -r .\requirements.txt
    
  4. local.setting.json Zmodyfikuj plik przy użyciu następującej konfiguracji:

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

Następne kroki

Dowiedz się więcej o wywołaniu usługi Dapr.