نظرة عامة على مشغل RabbitMQ لـ Azure Functions
ملاحظة
يتم دعم ربط البيانات الخاصة ب RabbitMQ بشكل كامل فقط من خلال الخطط المميزة والمخصصة. خطة Consumption غير مدعومة.
استخدم مشغل RabbitMQ للرد على الرسائل من قائمة انتظار RabbitMQ.
للحصول على معلومات حول تفاصيل الإعداد والتكوين، راجع نظرة عامة.
مثال
يمكن إنشاء الدالة C # باستخدام أحد أوضاع C # التالية:
- مكتبة الفئة أثناء العملية: الدالة C# المترجمة التي يتم تشغيلها في نفس العملية مثل وقت تشغيل الوظائف.
- مكتبة فئة العملية المعزولة: الدالة C # المترجمة التي يتم تشغيلها في عملية معزولة عن وقت التشغيل. مطلوب عملية معزولة لدعم وظائف C # التي تعمل على .NET 5.0.
- البرنامج النصي C#: يستخدم بشكل أساسي عند إنشاء وظائف C# في مدخل Azure.
يظهر المثال التالي وظيفة C# التي تقرأ وتسجل رسالة RabbitMQ كحدث RabbitMQ:
[FunctionName("RabbitMQTriggerCSharp")]
public static void RabbitMQTrigger_BasicDeliverEventArgs(
[RabbitMQTrigger("queue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")] BasicDeliverEventArgs args,
ILogger logger
)
{
logger.LogInformation($"C# RabbitMQ queue trigger function processed message: {Encoding.UTF8.GetString(args.Body)}");
}
يوضح المثال التالي كيفية قراءة الرسالة كـ POCO.
namespace Company.Function
{
public class TestClass
{
public string x { get; set; }
}
public class RabbitMQTriggerCSharp{
[FunctionName("RabbitMQTriggerCSharp")]
public static void RabbitMQTrigger_BasicDeliverEventArgs(
[RabbitMQTrigger("queue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")] TestClass pocObj,
ILogger logger
)
{
logger.LogInformation($"C# RabbitMQ queue trigger function processed message: {pocObj}");
}
}
}
كما هو الحال مع كائنات Json، سيحدث خطأ إذا لم يتم تنسيق الرسالة بشكل صحيح ككائن C#. إذا كان الأمر كذلك ، فإنه مرتبط بعد ذلك بالمتغير pocObj ، والذي يمكن استخدامه لما هو مطلوب منه.
تستخدم وظيفة Java التالية @RabbitMQTrigger التعليق التوضيحي من أنواع Java RabbitMQ لوصف التكوين المطلوب لتشغيل قائمة انتظار RabbitMQ. تلتقط الوظيفة الرسالة الموضوعة في قائمة الانتظار وتضيفها إلى السجلات.
@FunctionName("RabbitMQTriggerExample")
public void run(
@RabbitMQTrigger(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "queue") String input,
final ExecutionContext context)
{
context.getLogger().info("Java HTTP trigger processed a request." + input);
}
يظهر المثال التالي ربط مشغل RabbitMQ في ملف function.json ووظيفة JavaScript التي تستخدم الربط. تقرأ الوظيفة رسالة RabbitMQ وتسجلها.
فيما يلي بيانات الربط في ملف function.json:
{
"bindings": [
{
"name": "myQueueItem",
"type": "rabbitMQTrigger",
"direction": "in",
"queueName": "queue",
"connectionStringSetting": "rabbitMQConnectionAppSetting"
}
]
}
فيما يلي التعليمة البرمجية للبرنامج الأساسي لـ JavaScript:
module.exports = async function (context, myQueueItem) {
context.log('JavaScript RabbitMQ trigger function processed work item', myQueueItem);
};
يوضح المثال التالي كيفية قراءة رسالة قائمة انتظار RabbitMQ عبر مشغل.
يُعرف ربط RabbitMQ في function.json حيث يُعين النوع إلى RabbitMQTrigger.
{
"scriptFile": "__init__.py",
"bindings": [
{
"name": "myQueueItem",
"type": "rabbitMQTrigger",
"direction": "in",
"queueName": "queue",
"connectionStringSetting": "rabbitMQConnectionAppSetting"
}
]
}
import logging
import azure.functions as func
def main(myQueueItem) -> None:
logging.info('Python RabbitMQ trigger function processed a queue item: %s', myQueueItem)
السمات
تستخدم كل من مكتبات 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#، استخدم السمة RabbitMQTrigger.
فيما RabbitMQTrigger يلي سمة في توقيع أسلوب لمكتبة قيد المعالجة:
[FunctionName("RabbitMQTest")]
public static void RabbitMQTest([RabbitMQTrigger("queue")] string message, ILogger log)
{
...
}
تعليقات توضيحية
يسمح التعليق التوضيحي RabbitMQTrigger لك بإنشاء وظيفة تعمل عند إنشاء رسالة 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 | الوصف |
|---|---|
| النوع | يجب تعيينها إلى RabbitMQTrigger. |
| direction | يجب تعيينها إلى in. |
| الاسم | اسم المتغير الذي يمثل قائمة الانتظار في التعليمة البرمجية للوظيفة. |
| 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. |
عند التطوير محليا، أضف إعدادات التطبيق في الملف local.settings.json في Values المجموعة.
راجع قسم المثال للحصول على أمثلة كاملة.
الاستخدام
يعتمد نوع المعلمة التي يدعمها مشغل RabbitMQ على طريقة C # المستخدمة.
نوع الرسالة الافتراضي هو حدث RabbitMQ، وBody يمكن قراءة خاصية حدث RabbitMQ كالأنواع المذكورة أدناه:
An object serializable as JSON- يتم تسليم الرسالة كسلسلة JSON صالحة.stringbyte[]POCO- يتم تنسيق الرسالة ككائن C#. للحصول على التعليمات البرمجية الكاملة، راجع مثال C#.
للحصول على مثال كامل، راجع مثال C#.
ارجع إلى التعليقات التوضيحية ل Java.
تتوفر رسالة قائمة الانتظار عبر context.bindings.<NAME> المكان الذي يطابق فيه <NAME> الاسم المحدد في function.json. إذا كانت البيانات الأساسية JSON، يتم إلغاء تسلسل القيمة في الكائن.
يرجى الرجوع إلى مثالPython.
قوائم الرسائل الخامدة
لا يمكن التحكم في قوائم الرسائل الخامدة والتبادلات أو تكوينها من مشغل RabbitMQ. لاستخدام قوائم انتظار الأحرف الميتة ، قم مسبقا بتكوين قائمة الانتظار المستخدمة بواسطة المشغل في RabbitMQ. ارجع إلى وثائق RabbitMQ.
إعدادات host.json
يصف هذا القسم إعدادات التكوين المتوفرة لهذا الربط في الإصدارات 2.x والإصدارات الأحدث. تنطبق الإعدادات في الملف host.json على جميع الوظائف في مثيل تطبيق دالة. يحتوي مثال ملف host.json أدناه على إعدادات الإصدار 2.x + فقط لهذا الربط. للحصول على مزيدٍ من المعلومات عن إعدادات تكوين التطبيق الوظيفي في الإصدارات 2.x والإصدارات الأحدث، راجع مرجع host.json لوظائف Azure.
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
"prefetchCount": 100,
"queueName": "queue",
"connectionString": "amqp://user:password@url:port",
"port": 10
}
}
}
| الخاصية | افتراضي | الوصف |
|---|---|---|
| prefetchCount | 30 | الحصول على عدد الرسائل التي يمكن لمستلم الرسائل أن يطلبها في نفس الوقت أو تعيينها ويتم تخزينها مؤقتًا. |
| queueName | غير متوفر | اسم قائمة الانتظار لتلقي الرسائل منها. |
| سلسلة الاتصال | غير متوفر | سلسلة اتصال قائمة انتظار رسائل RabbitMQ. يتم تحديد سلسلة الاتصال مباشرة هنا وليس من خلال إعداد التطبيق. |
| المنفذ | 0 | (يتم تجاهلها إذا كنت تستخدم connectionString) الحصول على المنفذ المُستخدم أو تعيينه. الإعدادات الافتراضية إلى 0، مما يشير إلى إعداد المنفذ الافتراضي لعميل rabbitmq: 5672. |
الاختبار المحلي
ملاحظة
إن connectionString لها الأسبقية على "اسم المضيف" و"اسم المستخدم" و"كلمة المرور". إذا تم تعيين كل هذه العناصر، فستتجاوز connectionString الأخريين.
إذا كنت تختبر محليا بدون سلسلة اتصال ، فيجب عليك تعيين إعداد "hostName" و "userName" و "password" إن أمكن في قسم "rabbitMQ" في host.json:
{
"version": "2.0",
"extensions": {
"rabbitMQ": {
...
"hostName": "localhost",
"username": "userNameSetting",
"password": "passwordSetting"
}
}
}
| الخاصية | افتراضي | الوصف |
|---|---|---|
| hostName | غير متوفر | (يتم تجاهلها إذا كنت تستخدم connectionString) اسم المضيف من قائمة الانتظار (على سبيل: 10.26.45.210) |
| اسم المستخدم | غير متوفر | (يتم تجاهلها إذا كنت تستخدم connectionString) الاسم للوصول إلى قائمة الانتظار |
| كلمة المرور | غير متوفر | (يتم تجاهلها إذا كنت تستخدم connectionString) كلمة المرور للوصول إلى قائمة الانتظار |
تمكين تغيير حجم Runtime
لكي يتم توسيع نطاق المشغل RabbitMQ إلى مثيلات متعددة، يجب تمكين إعداد مراقبة مقياس وقت التشغيل.
في المدخل، يمكن العثور على هذا الإعداد ضمن >إعدادات Function runtime للتكوين لتطبيق الوظائف.
في CLI، يمكنك تمكين مراقبة مقياس وقت التشغيل باستخدام الأمر التالي:
az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites
مراقبة نقطة نهاية RabbitMQ
لمراقبة قوائم الانتظار والتبادلات الخاصة بك لنقطة نهاية RabbitMQ معينة:
- تمكين الوظيفة الإضافية لإدارة RabbitMQ
- استعرض إلى http://{node-hostname}:15672 وسجل الدخول باسم المستخدم وكلمة المرور الخاصين بك.