Déclencheur d’appel de service Dapr pour Azure Functions
Azure Functions peut être déclenché sur un appel de service Dapr à l’aide des événements Dapr suivants.
Pour plus d’informations sur l’installation et la configuration de l’extension Dapr, consultez la vue d’ensemble de l’extension Dapr.
Exemple
Une fonction C# peut être créée à l’aide de l’un des modes C# suivants :
Modèle d’exécution | Description |
---|---|
Modèle de worker isolé | Le code de votre fonction s’exécute dans un processus Worker .NET distinct. Utilisez avec les versions prises en charge de .NET et .NET Framework. Pour plus d’informations, consultez Développer les fonctions de processus Worker isolé .NET. |
Modèle in-process | Le code de votre fonction s’exécute dans le même processus que le processus hôte Functions. Prend uniquement en charge les versions LTS (Long Term Support) de .NET. Pour plus d’informations, consultez Développer des fonctions de bibliothèque de classes .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"];
}
Voici le code Java du déclencheur d’appel du service Dapr :
@FunctionName("CreateNewOrder")
public String run(
@DaprServiceInvocationTrigger(
methodName = "CreateNewOrder")
)
Utilisez l’objet app
pour inscrire le 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 };
}
});
Les exemples suivants montrent les déclencheurs Dapr dans un fichier function.json et le code PowerShell qui utilise ces liaisons.
Voici le fichier function.json pour daprServiceInvocationTrigger
:
{
"bindings": [
{
"type": "daprServiceInvocationTrigger",
"name": "payload",
"direction": "in"
}
]
}
Pour plus d’informations sur les propriétés du fichier function.json, consultez la section Configuration.
Dans le 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"]
L’exemple suivant montre un déclencheur d’appel de service Dapr, qui utilise le modèle de programmation Python v2. Pour utiliser les daprServiceInvocationTrigger
dans le code de votre application de fonction 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)
Attributs
Dans le modèle in-process, utilisez la commande DaprServiceInvocationTrigger
pour déclencher une liaison d’appel de service Dapr, qui prend en charge les propriétés suivantes.
Paramètre | Description |
---|---|
MethodName | facultatif. Nom de la méthode que l’appelant Dapr doit utiliser. S’il n’est pas spécifié, le nom de la fonction est utilisé comme nom de méthode. |
Annotations
L’annotation DaprServiceInvocationTrigger
vous permet de créer une fonction qui est appelée par le runtime Dapr.
Élément | Description |
---|---|
methodName | Nom de la méthode. |
Configuration
Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le code.
Propriété | Description |
---|---|
type | Cette propriété doit être définie sur daprServiceInvocationTrigger . |
name | Nom de la variable qui représente les données Dapr dans le code de fonction. |
Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json.
Propriété function.json | Description |
---|---|
type | Cette propriété doit être définie sur daprServiceInvocationTrigger . |
name | Nom de la variable qui représente les données Dapr dans le code de fonction. |
Pour obtenir des exemples complets, consultez la section Exemple.
Usage
Pour utiliser un déclencheur d’appel de service Dapr, découvrez les composants à utiliser avec le déclencheur d’appel de service et comment les configurer dans la documentation officielle Dapr.
Pour utiliser daprServiceInvocationTrigger
dans Python v2, configurez votre projet avec les dépendances appropriées.
Dans votre fichier
requirements.text
, ajoutez la ligne suivante :azure-functions==1.18.0b3
Dans le terminal, installez la bibliothèque Python.
pip install -r .\requirements.txt
Modifiez votre fichier
local.setting.json
avec la configuration suivante :"PYTHON_ISOLATE_WORKER_DEPENDENCIES":1