Dapr Binding kimeneti kötés az Azure Functionshez
Fontos
Az Azure Functions Dapr-bővítménye jelenleg előzetes verzióban érhető el, és csak az Azure Container Apps-környezetekben támogatott.
A Dapr kimeneti kötés lehetővé teszi, hogy értéket küldjön egy Dapr kimeneti kötésnek egy függvény végrehajtása során.
A Dapr-bővítmény beállítási és konfigurációs részleteiről a Dapr bővítmény áttekintésében olvashat.
Példa
A C#-függvények a következő C#-módok egyikével hozhatók létre:
Végrehajtási modell | Leírás |
---|---|
Izolált feldolgozói modell | A függvénykód egy külön .NET-feldolgozófolyamatban fut. A .NET és a .NET-keretrendszer támogatott verzióival használható. További információ: .NET izolált feldolgozói folyamatfüggvények fejlesztése. |
Folyamaton belüli modell | A függvénykód ugyanabban a folyamatban fut, mint a Functions gazdafolyamata. Csak a .NET hosszú távú támogatási (LTS) verzióit támogatja. További információ: .NET-osztálykódtár-függvények fejlesztése. |
Az alábbi példa egy Dapr szolgáltatáshívási eseményindító és egy Dapr kimeneti kötés használatát mutatja be egy kötéskérés olvasásához és feldolgozásához.
[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);
}
Az alábbi példa egy függvényt "SendMessagetoKafka"
hoz létre a DaprBindingOutput
következő kötéssel 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;
}
Az alábbi példában a Dapr kimeneti kötés párosítva van a Dapr meghívási kimeneti eseményindítójával, amelyet az app
objektum regisztrál:
const { app, trigger } = require('@azure/functions');
app.generic('SendMessageToKafka', {
trigger: trigger.generic({
type: 'daprServiceInvocationTrigger',
name: "payload"
}),
return: daprBindingOuput,
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 };
}
});
Az alábbi példák a Dapr-eseményindítókat mutatják be egy function.json fájlban és a PowerShell-kódban, amely ezeket a kötéseket használja.
A következő function.json fájl:daprBinding
{
"bindings":
{
"type": "daprBinding",
"direction": "out",
"bindingName": "%KafkaBindingName%",
"operation": "create",
"name": "messages"
}
}
A function.json fájltulajdonságokról a Konfiguráció szakaszban talál további információt.
Kódban:
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
Az alábbi példa egy Dapr Binding kimeneti kötést mutat be, amely a v2 Python programozási modellt használja. A Python-függvényalkalmazás kódjában való használathoz @dapp.dapr_binding_output
:
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'))
Attribútumok
A folyamatban lévő modellben az alábbi paramétereket támogató Dapr-kötés kimeneti kötésének definiálásához használja a DaprBinding
következő paramétereket:
Paraméter | Leírás | Attribútumon keresztül küldhető el | Elküldhető a RequestBody-on keresztül |
---|---|---|---|
BindingName | A Dapr-kötés neve. | ✔️ | ✔️ |
Művelet | A konfigurált kötési művelet. | ✔️ | ✔️ |
Metaadatok | A metaadat-névtér. | ❌ | ✔️ |
Adatok | Szükséges. A kötési művelet adatai. | ❌ | ✔️ |
Jegyzetek
A DaprBindingOutput
széljegyzet lehetővé teszi egy olyan függvény létrehozását, amely kimeneti kötést küld.
Elem | Leírás | Attribútumon keresztül küldhető el | Elküldhető a RequestBody-on keresztül |
---|---|---|---|
bindingName | A Dapr-kötés neve. | ✔️ | ✔️ |
Kimeneti | A konfigurált kötési művelet. | ✔️ | ✔️ |
metaadatok | A metaadat-névtér. | ❌ | ✔️ |
data | Szükséges. A kötési művelet adatai. | ❌ | ✔️ |
Konfiguráció
Az alábbi táblázat a kódban beállított kötéskonfigurációs tulajdonságokat ismerteti.
Tulajdonság | Leírás | Attribútumon keresztül küldhető el | Elküldhető a RequestBody-on keresztül |
---|---|---|---|
bindingName | A kötés neve. | ✔️ | ✔️ |
Művelet | A kötési művelet. | ✔️ | ✔️ |
metaadatok | A metaadat-névtér. | ❌ | ✔️ |
data | Szükséges. A kötési művelet adatai. | ❌ | ✔️ |
Az alábbi táblázat a function.json fájlban beállított kötéskonfigurációs tulajdonságokat ismerteti.
function.json tulajdonság | Leírás | Attribútumon keresztül küldhető el | Elküldhető a RequestBody-on keresztül |
---|---|---|---|
bindingName | A kötés neve. | ✔️ | ✔️ |
Művelet | A kötési művelet. | ✔️ | ✔️ |
metaadatok | A metaadat-névtér. | ❌ | ✔️ |
data | Szükséges. A kötési művelet adatai. | ❌ | ✔️ |
Az alábbi táblázat a Python-kódban beállított kötéskonfigurációs tulajdonságokat @dapp.dapr_binding_output
ismerteti.
Tulajdonság | Leírás | Attribútumon keresztül küldhető el | Elküldhető a RequestBody-on keresztül |
---|---|---|---|
binding_name | A kötési esemény neve. | ✔️ | ✔️ |
Művelet | A kötési művelet neve/azonosítója. | ✔️ | ✔️ |
metaadatok | A metaadat-névtér. | ❌ | ✔️ |
data | Szükséges. A kötési művelet adatai. | ❌ | ✔️ |
Ha a tulajdonságok attribútumokban vannak definiálva, és RequestBody
a rendszer prioritást ad a megadott RequestBody
adatoknak.
A teljes példákért tekintse meg a Példa szakaszt .
Használat
A Dapr kimeneti kötésének használatához először állítson be egy Dapr kimeneti kötés összetevőt. A hivatalos Dapr-dokumentációban többet is megtudhat arról, hogy melyik összetevőt használja, és hogyan állíthatja be.
- Dapr kimeneti kötés összetevő specifikációi
- Útmutató: Kimeneti kötések használata külső erőforrásokhoz való kapcsolódáshoz
A Python v2-ben való daprBinding
használatához állítsa be a projektet a megfelelő függőségekkel.
Virtuális környezet létrehozása és aktiválása.
requirements.text
A fájlban adja hozzá a következő sort:azure-functions==1.18.0b3
Telepítse a Python-kódtárat a terminálban.
pip install -r .\requirements.txt
Módosítsa a
local.setting.json
fájlt a következő konfigurációval:"PYTHON_ISOLATE_WORKER_DEPENDENCIES":1