Liaison de sortie Dapr Binding pour Azure Functions
La liaison de sortie Dapr vous permet d’envoyer une valeur à une liaison de sortie Dapr pendant l’exécution d’une fonction.
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. |
L’exemple suivant illustre l’utilisation d’un déclencheur d’appel de service Dapr et d’une liaison de sortie Dapr pour lire et traiter une demande de liaison.
[FunctionName("SendMessageToKafka")]
public static async Task Run(
[DaprServiceInvocationTrigger] JObject payload,
[DaprBinding(BindingName = "%KafkaBindingName%", Operation = "create")] IAsyncCollector<object> messages,
ILogger log)
{
log.LogInformation("C# function processed a SendMessageToKafka request.");
await messages.AddAsync(payload);
}
L’exemple suivant crée une fonction "SendMessageToKafka"
à l’aide de la liaison DaprBindingOutput
avec DaprServiceInvocationTrigger
:
@FunctionName("SendMessageToKafka")
public String run(
@DaprServiceInvocationTrigger(
methodName = "SendMessageToKafka")
String payload,
@DaprBindingOutput(
bindingName = "%KafkaBindingName%",
operation = "create")
OutputBinding<String> product,
final ExecutionContext context) {
context.getLogger().info("Java function processed a SendMessageToKafka request.");
product.setValue(payload);
return payload;
}
Dans l’exemple suivant, la liaison de sortie Dapr est associée au déclencheur de sortie d’appel Dapr, qui est inscrit par l’objet app
:
const { app, trigger } = require('@azure/functions');
app.generic('SendMessageToKafka', {
trigger: trigger.generic({
type: 'daprServiceInvocationTrigger',
name: "payload"
}),
return: daprBindingOutput,
handler: async (request, context) => {
context.log("Node function processed a SendMessageToKafka request from the Dapr Runtime.");
context.log(context.triggerMetadata.payload)
return { "data": context.triggerMetadata.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 daprBinding
:
{
"bindings":
{
"type": "daprBinding",
"direction": "out",
"bindingName": "%KafkaBindingName%",
"operation": "create",
"name": "messages"
}
}
Pour plus d’informations sur les propriétés du fichier function.json, consultez la section Configuration.
Dans le code :
using namespace System.Net
# Input bindings are passed in via param block.
param($req, $TriggerMetadata)
Write-Host "Powershell SendMessageToKafka processed a request."
$invoke_output_binding_req_body = @{
"data" = $req
}
# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name messages -Value $invoke_output_binding_req_body
L’exemple suivant montre une liaison de sortie Dapr Binding, qui utilise le modèle de programmation Python v2. Pour utiliser @dapp.dapr_binding_output
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="SendMessageToKafka")
@app.dapr_service_invocation_trigger(arg_name="payload", method_name="SendMessageToKafka")
@app.dapr_binding_output(arg_name="messages", binding_name="%KafkaBindingName%", operation="create")
def main(payload: str, messages: func.Out[bytes]) -> None:
logging.info('Python processed a SendMessageToKafka request from the Dapr Runtime.')
messages.set(json.dumps({"data": payload}).encode('utf-8'))
Attributs
Dans le modèle in-process, utilisez le DaprBinding
pour définir une liaison de sortie de Dapr Binding, qui prend en charge ces paramètres :
Paramètre | Description | Peut être envoyé via l’attribut | Peut être envoyé via RequestBody |
---|---|---|---|
BindingName | Nom de la liaison Dapr. | ✔️ | ✔️ |
Opération | Opération de liaison configurée. | ✔️ | ✔️ |
Métadonnées | Espace de noms de métadonnées. | ❌ | ✔️ |
Données | Obligatoire. Données de l’opération de liaison. | ❌ | ✔️ |
Annotations
L’annotation DaprBindingOutput
vous permet de créer une fonction qui envoie une liaison de sortie.
Élément | Description | Peut être envoyé via l’attribut | Peut être envoyé via RequestBody |
---|---|---|---|
bindingName | Nom de la liaison Dapr. | ✔️ | ✔️ |
output | Opération de liaison configurée. | ✔️ | ✔️ |
métadonnées | Espace de noms de métadonnées. | ❌ | ✔️ |
data | Obligatoire. Données de l’opération de liaison. | ❌ | ✔️ |
Configuration
Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le code.
Propriété | Description | Peut être envoyé via l’attribut | Peut être envoyé via RequestBody |
---|---|---|---|
bindingName | Le nom de la liaison. | ✔️ | ✔️ |
de commutation | Opération de liaison. | ✔️ | ✔️ |
métadonnées | Espace de noms de métadonnées. | ❌ | ✔️ |
data | Obligatoire. Données de l’opération de liaison. | ❌ | ✔️ |
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 | Peut être envoyé via l’attribut | Peut être envoyé via RequestBody |
---|---|---|---|
bindingName | Le nom de la liaison. | ✔️ | ✔️ |
de commutation | Opération de liaison. | ✔️ | ✔️ |
métadonnées | Espace de noms de métadonnées. | ❌ | ✔️ |
data | Obligatoire. Données de l’opération de liaison. | ❌ | ✔️ |
Le tableau suivant explique les propriétés de configuration de liaison pour @dapp.dapr_binding_output
que vous définissez dans votre code Python.
Propriété | Description | Peut être envoyé via l’attribut | Peut être envoyé via RequestBody |
---|---|---|---|
binding_name | Nom de l’événement de liaison. | ✔️ | ✔️ |
de commutation | Nom/identificateur de l’opération de liaison. | ✔️ | ✔️ |
métadonnées | Espace de noms de métadonnées. | ❌ | ✔️ |
data | Obligatoire. Données de l’opération de liaison. | ❌ | ✔️ |
Si les propriétés sont définies dans les attributs et RequestBody
, la priorité est attribuée aux données fournies dans RequestBody
.
Pour obtenir des exemples complets, consultez la section Exemple.
Usage
Pour utiliser la liaison de sortie Dapr, commencez par configurer un composant de liaison de sortie Dapr. Vous pouvez en savoir plus sur le composant à utiliser et sur la façon de le configurer dans la documentation officielle Dapr.
- Spécifications des composants de liaison de sortie Dapr
- Guide pratique pour utiliser des liaisons de sortie pour interagir avec des ressources externes
Pour utiliser daprBinding
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