Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'associazione di output Dapr consente di inviare un valore a un'associazione di output Dapr durante l'esecuzione di una funzione.
Per informazioni sull'installazione e sulla configurazione dell'estensione Dapr, vedere panoramica dell'estensione Dapr.
Example
È possibile creare una funzione C# usando una delle modalità C# seguenti:
| Execution model | Description |
|---|---|
| Modello di lavoro isolato | Il codice della funzione viene eseguito in un processo di lavoro .NET separato. Usare con le versioni supportate di .NET e .NET Framework. Per altre informazioni, vedere Guida per l'esecuzione di Funzioni di Azure C# nel modello di lavoro isolato. |
| In-process model | Il codice della funzione viene eseguito nello stesso processo del processo host di Funzioni. Supporta solo versioni LTS (Long Term Support) di .NET. Per altre informazioni, vedere Sviluppare funzioni della libreria di classi C# usando Funzioni di Azure. |
L'esempio seguente illustra l'uso di un trigger di chiamata al servizio Dapr e di un'associazione di output Dapr per leggere ed elaborare una richiesta di associazione.
[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);
}
Nell'esempio seguente viene creata una funzione "SendMessageToKafka" usando l'associazione DaprBindingOutput con 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;
}
Nell'esempio seguente, l'associazione di output Dapr viene associata al trigger di output Dapr invoke, registrato dall'oggetto 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 };
}
});
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 daprBinding:
{
"bindings":
{
"type": "daprBinding",
"direction": "out",
"bindingName": "%KafkaBindingName%",
"operation": "create",
"name": "messages"
}
}
For more information about function.json file properties, see the Configuration section.
In 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'esempio seguente mostra un'associazione di output dapr Binding, che usa il modello di programmazione Python v2. Per usare @dapp.dapr_binding_output nel codice dell'app per le funzioni 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'))
Attributes
In the in-process model, use the DaprBinding to define a Dapr binding output binding, which supports these parameters:
| Parameter | Description | Può essere inviato tramite Attributo | Può essere inviato tramite RequestBody |
|---|---|---|---|
| BindingName | Nome dell'associazione Dapr. | ✔️ | ✔️ |
| Operation | Operazione di associazione configurata. | ✔️ | ✔️ |
| Metadata | Spazio dei nomi dei metadati. | ❌ | ✔️ |
| Data | Required. Dati per l'operazione di associazione. | ❌ | ✔️ |
Annotations
L'annotazione DaprBindingOutput consente di creare una funzione che invia un'associazione di output.
| Element | Description | Può essere inviato tramite Attributo | Può essere inviato tramite RequestBody |
|---|---|---|---|
| bindingName | Nome dell'associazione Dapr. | ✔️ | ✔️ |
| output | Operazione di associazione configurata. | ✔️ | ✔️ |
| metadata | Spazio dei nomi dei metadati. | ❌ | ✔️ |
| data | Required. Dati per l'operazione di associazione. | ❌ | ✔️ |
Configuration
Nella tabella seguente vengono illustrate le proprietà di configurazione dell'associazione impostate nel codice.
| Property | Description | Può essere inviato tramite Attributo | Può essere inviato tramite RequestBody |
|---|---|---|---|
| bindingName | Nome dell'associazione. | ✔️ | ✔️ |
| operation | Operazione di associazione. | ✔️ | ✔️ |
| metadata | Spazio dei nomi dei metadati. | ❌ | ✔️ |
| data | Required. Dati per l'operazione di associazione. | ❌ | ✔️ |
Nella tabella seguente sono illustrate le proprietà di configurazione dell'associazione impostate nel file function.json.
| function.json property | Description | Può essere inviato tramite Attributo | Può essere inviato tramite RequestBody |
|---|---|---|---|
| bindingName | Nome dell'associazione. | ✔️ | ✔️ |
| operation | Operazione di associazione. | ✔️ | ✔️ |
| metadata | Spazio dei nomi dei metadati. | ❌ | ✔️ |
| data | Required. Dati per l'operazione di associazione. | ❌ | ✔️ |
La tabella seguente illustra le proprietà di configurazione dell'associazione per @dapp.dapr_binding_output impostate nel codice Python.
| Property | Description | Può essere inviato tramite Attributo | Può essere inviato tramite RequestBody |
|---|---|---|---|
| binding_name | Nome dell'evento di associazione. | ✔️ | ✔️ |
| operation | Nome/identificatore dell'operazione di associazione. | ✔️ | ✔️ |
| metadata | Spazio dei nomi dei metadati. | ❌ | ✔️ |
| data | Required. Dati per l'operazione di associazione. | ❌ | ✔️ |
Se le proprietà sono definite sia in Attributi che in RequestBody, la priorità viene assegnata ai dati forniti in RequestBody.
See the Example section for complete examples.
Usage
Per usare l'associazione di output Dapr, iniziare configurando un componente di associazione di output Dapr. Per altre informazioni sul componente da usare e su come configurarlo, vedere la documentazione ufficiale di Dapr.
- Specifiche dei componenti di associazione di output dapr
- Procedura: Usare associazioni di output per interfacciarsi con risorse esterne
Per usare daprBinding in Python v2, configurare il progetto con le dipendenze corrette.
Nel file
requirements.textaggiungere la riga seguente:azure-functions==1.18.0b3Nel terminale installare la libreria Python.
pip install -r .\requirements.txtModificare il file
local.setting.jsoncon la configurazione seguente:"PYTHON_ISOLATE_WORKER_DEPENDENCIES":1