Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit der Dapr-Ausgabebindung können Sie während einer Funktionsausführung einen Wert an eine Dapr-Ausgabebindung senden.
Informationen zu Setup- und Konfigurationsdetails der Dapr-Erweiterung finden Sie in der Dapr-Erweiterungsübersicht.
Beispiel
Eine C#-Funktion kann mit einem der folgenden C#-Modi erstellt werden:
Ausführungsmodell | Beschreibung |
---|---|
Isoliertes Workermodell | Ihr Funktionscode wird in einem separaten .NET-Workerprozess ausgeführt. Verwenden Sie dazu unterstützte Versionen von .NET und .NET Framework. Weitere Informationen finden Sie im Handbuch zum Ausführen von C#-Azure-Funktionen im isolierten Arbeitsmodell. |
In-Process-Modell | Ihr Funktionscode wird im gleichen Prozess wie der Functions-Hostprozess ausgeführt. Unterstützt nur LTS-Versionen (Long Term Support) von .NET. Weitere Informationen finden Sie unter Entwickeln von C#-Klassenbibliotheksfunktionen mithilfe von Azure Functions. |
Das folgende Beispiel veranschaulicht die Verwendung eines Dapr-Dienstaufruftriggers und einer Dapr-Ausgabebindung zum Lesen und Verarbeiten einer Bindungsanforderung.
[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);
}
Im folgenden Beispiel wird eine "SendMessageToKafka"
-Funktion mithilfe der DaprBindingOutput
-Bindung mit dem Folgenden DaprServiceInvocationTrigger
erstellt:
@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;
}
Im folgenden Beispiel wird die Ausgabebindung des Dapr-Zustands mit einem Dapr-Aufrufausgabe-Trigger gekoppelt, der vom app
-Objekt registriert wird:
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 };
}
});
Die folgenden Beispiele zeigen Dapr-Trigger in der Datei function.json und PowerShell-Code, der diese Bindungen verwendet.
Hier sehen Sie die Datei function.json für daprBinding
:
{
"bindings":
{
"type": "daprBinding",
"direction": "out",
"bindingName": "%KafkaBindingName%",
"operation": "create",
"name": "messages"
}
}
Weitere Informationen zu den Dateieigenschaften von function.json finden Sie im Abschnitt Konfiguration.
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
Das folgende Beispiel zeigt eine Dapr-Ausgabebindung, die das v2 Python-Programmiermodell verwendet. So verwenden Sie @dapp.dapr_binding_output
in Ihrem Python-Funktions-App-Code:
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'))
Attribute
Verwenden Sie im In-Process-Modell die DaprBinding
, um einen Dapr-Bindungsausgabebindung zu definieren, der diese Parameter unterstützt:
Parameter | Beschreibung | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
---|---|---|---|
BindingName | Der Name der Dapr-Bindung. | ✔️ | ✔️ |
Vorgang | Der konfigurierte Bindungsvorgang. | ✔️ | ✔️ |
Metadaten | Der Metadata Namespace. | ❌ | ✔️ |
Daten | Erforderlich. Die Daten für den Bindungsvorgang. | ❌ | ✔️ |
Anmerkungen
Mit der Anmerkung DaprBindingOutput
können Sie eine Funktion erstellen, die eine Ausgabebindung sendet.
Element | Beschreibung | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
---|---|---|---|
bindingName | Der Name der Dapr-Bindung. | ✔️ | ✔️ |
Ausgabe | Der konfigurierte Bindungsvorgang. | ✔️ | ✔️ |
Metadaten | Der Metadata Namespace. | ❌ | ✔️ |
Daten | Erforderlich. Die Daten für den Bindungsvorgang. | ❌ | ✔️ |
Konfiguration
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie im Code festlegen.
Eigenschaft | Beschreibung | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
---|---|---|---|
bindingName | Der Name der Bindung. | ✔️ | ✔️ |
Operation | Der Bindungsvorgang. | ✔️ | ✔️ |
Metadaten | Der Metadata Namespace. | ❌ | ✔️ |
Daten | Erforderlich. Die Daten für den Bindungsvorgang. | ❌ | ✔️ |
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json festlegen.
function.json-Eigenschaft | Beschreibung | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
---|---|---|---|
bindingName | Der Name der Bindung. | ✔️ | ✔️ |
Operation | Der Bindungsvorgang. | ✔️ | ✔️ |
Metadaten | Der Metadata Namespace. | ❌ | ✔️ |
Daten | Erforderlich. Die Daten für den Bindungsvorgang. | ❌ | ✔️ |
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften für @dapp.dapr_binding_output
, die Sie im Python-Code festlegen.
Eigenschaft | Beschreibung | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
---|---|---|---|
binding_name | Der Name des Bindungsereignisses. | ✔️ | ✔️ |
Operation | Der Name/Bezeichner des Bindungsvorgangs. | ✔️ | ✔️ |
Metadaten | Der Metadata Namespace. | ❌ | ✔️ |
Daten | Erforderlich. Die Daten für den Bindungsvorgang. | ❌ | ✔️ |
Wenn Eigenschaften sowohl in Attributen als auch in RequestBody
definiert sind, haben die in RequestBody
bereitgestellten Daten höhere Priorität.
Vollständige Beispiele finden Sie im Abschnitt Beispiele.
Verwendung
Um den Dapr-Ausgabebindung zu verwenden, richten Sie zunächst eine Dapr-Ausgabebindungskomponente ein. In der offiziellen Dapr-Dokumentation erfahren Sie mehr darüber, welche Komponente Sie verwenden sollten und wie Sie diese einrichten können.
- Spezifikationen zur Dapr-Ausgabebindungskomponente
- Vorgehensweise: Verwenden von Ausgabebindungen zur Schnittstelle mit externen Ressourcen
Um daprBinding
in Python v2 zu verwenden, richten Sie Ihr Projekt mit den richtigen Abhängigkeiten ein.
Fügen Sie in Ihrer
requirements.text
-Datei die folgende Zeile hinzu:azure-functions==1.18.0b3
Installieren Sie im Terminal die Python-Bibliothek.
pip install -r .\requirements.txt
Ändern Sie ihre
local.setting.json
-Datei mit der folgenden Konfiguration:"PYTHON_ISOLATE_WORKER_DEPENDENCIES":1