نظرة عامة إلى مخرجات ارتباط RabbitMQ لـ Azure Functions
ملاحظة
يتم دعم ربط البيانات الخاصة ب RabbitMQ بشكل كامل فقط من خلال الخطط المميزة والمخصصة. الاستهلاك غير مدعم.
استخدام ربط إخراج RabbitMQ لإرسال رسائل إلى قائمة انتظار RabbitMQ.
للحصول على معلومات حول تفاصيل الإعداد والتكوين، راجع الاستعراض العام.
مثال
يمكن إنشاء الدالة C # باستخدام أحد أوضاع C # التالية:
- مكتبة الفئة أثناء العملية: الدالة C# المترجمة التي يتم تشغيلها في نفس العملية مثل وقت تشغيل الوظائف.
- مكتبة فئة العملية المعزولة: الدالة C # المترجمة التي يتم تشغيلها في عملية معزولة عن وقت التشغيل. مطلوب عملية معزولة لدعم وظائف C # التي تعمل على .NET 5.0.
- البرنامج النصي C#: يستخدم بشكل أساسي عند إنشاء وظائف C# في مدخل Azure.
يُظهر المثال التالي دالة C# التي ترسل رسالة RabbitMQ عندما يتم تشغيلها بواسطة TimerTrigger كل 5 دقائق مستخدمة القيمة المرجعة للطريقة على أنها المخرج
[FunctionName("RabbitMQOutput")]
[return: RabbitMQ(QueueName = "outputQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")]
public static string Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
{
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
return $"{DateTime.Now}";
}
يوضح المثال التالي كيفية استخدام واجهة IAsyncCollector لإرسال الرسائل.
[FunctionName("RabbitMQOutput")]
public static async Task Run(
[RabbitMQTrigger("sourceQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")] string rabbitMQEvent,
[RabbitMQ(QueueName = "destinationQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")]IAsyncCollector<string> outputEvents,
ILogger log)
{
// send the message
await outputEvents.AddAsync(JsonConvert.SerializeObject(rabbitMQEvent));
}
يوضح المثال التالي كيفية إرسال الرسائل كـ POCOs.
namespace Company.Function
{
public class TestClass
{
public string x { get; set; }
}
public static class RabbitMQOutput{
[FunctionName("RabbitMQOutput")]
public static async Task Run(
[RabbitMQTrigger("sourceQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")] TestClass rabbitMQEvent,
[RabbitMQ(QueueName = "destinationQueue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")]IAsyncCollector<TestClass> outputPocObj,
ILogger log)
{
// send the message
await outputPocObj.AddAsync(rabbitMQEvent);
}
}
}
تستخدم دالة Java التالية التعليق التوضيحي @RabbitMQOutput من أنواع Java RabbitMQ لوصف التكوين المطلوب لربط إخراج قائمة انتظار RabbitMQ. الدالة تقوم بإرسال رسالة إلى قائمة انتظار RabbitMQ عند تشغيلها بواسطة TimerTrigger كل 5 دقائق.
@FunctionName("RabbitMQOutputExample")
public void run(
@TimerTrigger(name = "keepAliveTrigger", schedule = "0 */5 * * * *") String timerInfo,
@RabbitMQOutput(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "hello") OutputBinding<String> output,
final ExecutionContext context) {
output.setValue("Some string");
}
المثال التالي يظهر مخرج ارتباط RabbitMQ في ملف function.json ودالة JavaScript التي تستخدم الارتباط تقرأ الدالة في الرسالة من مشغل HTTP وإخراجها إلى قائمة انتظار RabbitMQ.
فيما يلي بيانات الربط في ملفfunction.json:
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"authLevel": "function",
"name": "input",
"methods": [
"get",
"post"
]
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
إليك التعليمة البرمجية لـJavaScript:
module.exports = async function (context, input) {
context.bindings.outputMessage = input.body;
};
يُظهر المثال التالي مخرج ارتباط RabbitMQ في ملف function.json ودالة Python التي تستخدم الارتباط. تقرأ الدالة في الرسالة من مشغل HTTP وإخراجها إلى قائمة انتظار RabbitMQ.
فيما يلي بيانات الربط في ملف function.json:
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
في _init_.py:
import azure.functions as func
def main(req: func.HttpRequest, outputMessage: func.Out[str]) -> func.HttpResponse:
input_msg = req.params.get('message')
outputMessage.set(input_msg)
return 'OK'
السمات
تستخدم كل من مكتبات C# قيد المعالجةوالعملية المعزولة السمة لتحديد الدالة. يستخدم البرنامج النصي C # بدلا من ذلك ملف تكوين function.json.
يأخذ منشئ السمة المعلمات التالية:
| المعلمة | الوصف |
|---|---|
| QueueName | اسم قائمة الانتظار التي يمكن من خلالها تلقي الرسائل. |
| HostName | اسم مضيف قائمة الانتظار، مثل 10.26.45.210. تجاهل عند استخدام ConnectStringSetting. |
| UserNameSetting | اسم إعداد التطبيق الذي يحتوي على اسم المستخدم للوصول إلى قائمة الانتظار، مثل UserNameSetting: "%< UserNameFromSettings >%". تجاهل عند استخدام ConnectStringSetting. |
| PasswordSetting | اسم إعداد التطبيق الذي يحتوي على كلمة المرور للوصول إلى قائمة الانتظار، مثل PasswordSetting: "%< PasswordFromSettings >%". تجاهل عند استخدام ConnectStringSetting. |
| ConnectionStringSetting | اسم إعداد التطبيق الذي يحتوي على سلسلة اتصال قائمة انتظار رسائل RabbitMQ. لن يعمل المشغل عند تحديد سلسلة الاتصال مباشرة بدلا من ذلك من خلال إعداد التطبيق. على سبيل المثال ، عندما تقوم بتعيين ConnectionStringSetting: "rabbitMQConnection"، ثم في كل من local.settings.json وفي تطبيق الوظائف الخاص بك تحتاج إلى إعداد مثل "RabbitMQConnection" : "< ActualConnectionstring >". |
| منفذ | يحصل على المنفذ المستخدم أو يضبطه. الإعدادات الافتراضية إلى 0 ، مما يشير إلى إعداد المنفذ الافتراضي لعميل RabbitMQ ل 5672. |
في فئات مكتبات C# استخدم RabbitMQAttribute
فيما RabbitMQTrigger يلي سمة في توقيع أسلوب لمكتبة قيد المعالجة:
[FunctionName("RabbitMQOutput")]
public static async Task Run(
[RabbitMQTrigger("SourceQueue", ConnectionStringSetting = "TriggerConnectionString")] string rabbitMQEvent,
[RabbitMQ("DestinationQueue", ConnectionStringSetting = "OutputConnectionString")]IAsyncCollector<string> outputEvents,
ILogger log)
{
...
}
تعليقات توضيحية
يسمح التعليق التوضيحي RabbitMQOutput لك بإنشاء وظيفة تعمل عند إنشاء رسالة RabbitMQ.
يدعم التعليق التوضيحي إعدادات التكوين التالية:
| الإعداد | الوصف |
|---|---|
| queueName | اسم قائمة الانتظار التي يمكن من خلالها تلقي الرسائل. |
| hostName | اسم مضيف قائمة الانتظار، مثل 10.26.45.210. تجاهل عند استخدام ConnectStringSetting. |
| userNameSetting | اسم إعداد التطبيق الذي يحتوي على اسم المستخدم للوصول إلى قائمة الانتظار، مثل UserNameSetting: "%< UserNameFromSettings >%". تجاهل عند استخدام ConnectStringSetting. |
| passwordSetting | اسم إعداد التطبيق الذي يحتوي على كلمة المرور للوصول إلى قائمة الانتظار، مثل PasswordSetting: "%< PasswordFromSettings >%". تجاهل عند استخدام ConnectStringSetting. |
| connectionStringSetting | اسم إعداد التطبيق الذي يحتوي على سلسلة اتصال قائمة انتظار رسائل RabbitMQ. لن يعمل المشغل عند تحديد سلسلة الاتصال مباشرة بدلا من ذلك من خلال إعداد التطبيق. على سبيل المثال ، عندما تقوم بتعيين ConnectionStringSetting: "rabbitMQConnection"، ثم في كل من local.settings.json وفي تطبيق الوظائف الخاص بك تحتاج إلى إعداد مثل "RabbitMQConnection" : "< ActualConnectionstring >". |
| المنفذ | يحصل على المنفذ المستخدم أو يضبطه. الإعدادات الافتراضية إلى 0 ، مما يشير إلى إعداد المنفذ الافتراضي لعميل RabbitMQ ل 5672. |
راجع مثال ربط الإخراج لمزيد من التفاصيل.
التكوين
يشرح الجدول الآتي خصائص تكوين ربط البيانات التي عليك تعيينها في ملف function.json.
| خاصية function.json | الوصف |
|---|---|
| النوع | يجب تعيينها إلى RabbitMQ. |
| direction | يجب تعيينها إلى out. |
| الاسم | اسم المتغير الذي يمثل قائمة الانتظار في التعليمة البرمجية للوظيفة. |
| queueName | اسم قائمة الانتظار لإرسال الرسائل إليها. |
| hostName | اسم مضيف قائمة الانتظار، مثل 10.26.45.210. تجاهل عند استخدام connectStringSetting. |
| "اسم المستخدم" | اسم إعداد التطبيق الذي يحتوي على اسم المستخدم للوصول إلى قائمة الانتظار، مثل UserNameSetting: "< UserNameFromSettings >". تجاهل عند استخدام connectStringSetting. |
| كلمة المرور | اسم إعداد التطبيق الذي يحتوي على كلمة المرور للوصول إلى قائمة الانتظار، مثل UserNameSetting: "< UserNameFromSettings >". تجاهل عند استخدام connectStringSetting. |
| connectionStringSetting | اسم إعداد التطبيق الذي يحتوي على سلسلة اتصال قائمة انتظار رسائل RabbitMQ. لن يعمل المشغل عند تحديد سلسلة الاتصال مباشرة بدلا من إعداد التطبيق في local.settings.json. على سبيل المثال ، عندما تقوم بتعيين connectionStringSetting: "rabbitMQConnection" ذلك في كل من local.settings.json وفي تطبيق الوظائف الخاص بك ، تحتاج إلى إعداد مثل "rabbitMQConnection" : "< ActualConnectionstring >". |
| المنفذ | يحصل على المنفذ المستخدم أو يضبطه. الإعدادات الافتراضية إلى 0 ، مما يشير إلى إعداد المنفذ الافتراضي لعميل RabbitMQ ل 5672. |
عند التطوير محليا، أضف إعدادات التطبيق في الملف local.settings.json في Values المجموعة.
راجع قسم المثال للحصول على أمثلة كاملة.
الاستخدام
يعتمد نوع المعلمة الذي يدعمه مشغل RabbitMQ على إصدار وقت تشغيل الوظائف وإصدار حزمة الإضافة وطريقة C # المستخدمة.
استخدم أنواع المعلمات التالية لربط الإخراج:
byte[]- إذا كانت قيمة المعلمة فارغة عند خروج الدالة، فإن الدالات لا تنشئ رسالة.string- إذا كانت قيمة المعلمة فارغة عند خروج الدالة، فإن الدالات لا تنشئ رسالة.POCO- يتم تنسيق الرسالة ككائن C#.
عند العمل مع دوال #C:
- تحتاج الدالات غير المتزامنة لقيمة إرجاع أو
IAsyncCollectorبدلًا من معلمةout.
للحصول على مثال كامل، راجع مثال C#.
استخدم أنواع المعلمات التالية لربط الإخراج:
byte[]- إذا كانت قيمة المعلمة فارغة عند خروج الدالة، فإن الدالات لا تنشئ رسالة.string- إذا كانت قيمة المعلمة فارغة عند خروج الدالة، فإن الدالات لا تنشئ رسالة.POJO- إذا لم يتم تنسيق قيمة المعلمة ككائن Java، فسيتم تلقي خطأ.
تتوفر رسالة قائمة الانتظار عبر context.bindings.<NAME> المكان الذي يطابق فيه <NAME> الاسم المحدد في function.json. إذا كانت البيانات الأساسية JSON، يتم إلغاء تسلسل القيمة في الكائن.
يرجى الرجوع إلى مثالPython.