ربط إخراج ربط Dapr لوظائف Azure
يسمح لك ربط إخراج Dapr بإرسال قيمة إلى ربط إخراج Dapr أثناء تنفيذ دالة.
للحصول على معلومات حول تفاصيل الإعداد والتكوين لملحق Dapr، راجع نظرة عامة على ملحق Dapr.
مثال
يمكن إنشاء وظيفة #C باستخدام أحد أوضاع C# التالية:
نموذج التنفيذ | الوصف |
---|---|
نموذج عامل معزول | تعمل تعليمة دالتك البرمجية في عملية عامل .NET منفصلة. استخدم مع الإصدارات المدعومة من .NET و.NET Framework. لمعرفة المزيد، راجع تطوير وظائف معالجة العامل المعزولة .NET. |
نموذج قيد المعالجة | تعمل تعليمة دالتك البرمجية في نفس العملية مثل عملية مضيف الدالات. يدعم إصدارات الدعم طويل الأجل (LTS) فقط من .NET. لمعرفة المزيد، راجع تطوير وظائف مكتبة فئة .NET. |
يوضح المثال التالي استخدام مشغل استدعاء خدمة Dapr وربط إخراج Dapr لقراءة طلب الربط ومعالجته.
[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);
}
ينشئ المثال التالي دالة "SendMessageToKafka"
باستخدام DaprBindingOutput
الربط مع 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;
}
في المثال التالي، يتم إقران ربط إخراج Dapr بمشغل إخراج استدعاء Dapr، والذي تم تسجيله بواسطة 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 };
}
});
تظهر الأمثلة التالية مشغلات Dapr في ملف function.json ورمز PowerShell الذي يستخدم هذه الروابط.
فيما يلي ملف function.json ل daprBinding
:
{
"bindings":
{
"type": "daprBinding",
"direction": "out",
"bindingName": "%KafkaBindingName%",
"operation": "create",
"name": "messages"
}
}
لمزيد من المعلومات حول خصائص الملف function.json ، راجع قسم التكوين .
في التعليمات البرمجية:
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
يوضح المثال التالي ربط إخراج Dapr Binding، والذي يستخدم نموذج برمجة v2 Python. لاستخدامها @dapp.dapr_binding_output
في التعليمات البرمجية لتطبيق وظائف 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'))
السمات
في النموذج قيد المعالجة، استخدم DaprBinding
لتعريف ربط إخراج ربط Dapr، والذي يدعم هذه المعلمات:
المعلمة | الوصف | يمكن إرسالها عبر السمة | يمكن إرسالها عبر RequestBody |
---|---|---|---|
اسم الربط | اسم ربط Dapr. | ✔️ | ✔️ |
العملية | عملية الربط المكونة. | ✔️ | ✔️ |
بيانات التعريف | مساحة اسم بيانات التعريف. | ❌ | ✔️ |
بيانات | مطلوب. بيانات عملية الربط. | ❌ | ✔️ |
تعليقات توضيحية
DaprBindingOutput
يسمح لك التعليق التوضيحي بإنشاء دالة ترسل ربط إخراج.
العنصر | الوصف | يمكن إرسالها عبر السمة | يمكن إرسالها عبر RequestBody |
---|---|---|---|
اسم الربط | اسم ربط Dapr. | ✔️ | ✔️ |
الإخراج | عملية الربط المكونة. | ✔️ | ✔️ |
بيانات التعريف | مساحة اسم بيانات التعريف. | ❌ | ✔️ |
البيانات | مطلوب. بيانات عملية الربط. | ❌ | ✔️ |
التكوين
يوضح الجدول التالي خصائص تكوين الربط التي قمت بتعيينها في التعليمات البرمجية.
الخاصية | الوصف | يمكن إرسالها عبر السمة | يمكن إرسالها عبر RequestBody |
---|---|---|---|
اسم الربط | اسم الربط. | ✔️ | ✔️ |
التشغيل | عملية الربط. | ✔️ | ✔️ |
بيانات التعريف | مساحة اسم بيانات التعريف. | ❌ | ✔️ |
البيانات | مطلوب. بيانات عملية الربط. | ❌ | ✔️ |
يشرح الجدول الآتي خصائص تكوين ربط البيانات التي عليك تعيينها في ملف function.json.
خاصية function.json | الوصف | يمكن إرسالها عبر السمة | يمكن إرسالها عبر RequestBody |
---|---|---|---|
اسم الربط | اسم الربط. | ✔️ | ✔️ |
التشغيل | عملية الربط. | ✔️ | ✔️ |
بيانات التعريف | مساحة اسم بيانات التعريف. | ❌ | ✔️ |
البيانات | مطلوب. بيانات عملية الربط. | ❌ | ✔️ |
يوضح الجدول التالي خصائص تكوين الربط التي @dapp.dapr_binding_output
قمت بتعيينها في التعليمات البرمجية ل Python.
الخاصية | الوصف | يمكن إرسالها عبر السمة | يمكن إرسالها عبر RequestBody |
---|---|---|---|
binding_name | اسم حدث الربط. | ✔️ | ✔️ |
التشغيل | اسم/معرف عملية الربط. | ✔️ | ✔️ |
بيانات التعريف | مساحة اسم بيانات التعريف. | ❌ | ✔️ |
البيانات | مطلوب. بيانات عملية الربط. | ❌ | ✔️ |
إذا تم تعريف الخصائص في كل من السمات و RequestBody
، يتم إعطاء الأولوية للبيانات المقدمة في RequestBody
.
راجع قسم Example للحصول على أمثلة كاملة.
الاستخدام
لاستخدام ربط إخراج Dapr، ابدأ بإعداد مكون ربط إخراج Dapr. يمكنك معرفة المزيد حول المكون الذي يجب استخدامه وكيفية إعداده في وثائق Dapr الرسمية.
لاستخدام daprBinding
في Python v2، قم بإعداد مشروعك باستخدام التبعيات الصحيحة.
إنشاء بيئة ظاهرية وتنشيطها.
في الملف،
requirements.text
أضف السطر التالي:azure-functions==1.18.0b3
في المحطة الطرفية، قم بتثبيت مكتبة Python.
pip install -r .\requirements.txt
قم بتعديل الملف الخاص بك
local.setting.json
بالتكوين التالي:"PYTHON_ISOLATE_WORKER_DEPENDENCIES":1