نظرة عامة على مشغل RabbitMQ لـ Azure Functions

ملاحظة

يتم دعم ربط البيانات الخاصة ب RabbitMQ بشكل كامل فقط من خلال الخطط المميزة والمخصصة. خطة Consumption غير مدعومة.

استخدم مشغل RabbitMQ للرد على الرسائل من قائمة انتظار RabbitMQ.

للحصول على معلومات حول تفاصيل الإعداد والتكوين، راجع نظرة عامة.

مثال

يمكن إنشاء الدالة C # باستخدام أحد أوضاع C # التالية:

يظهر المثال التالي وظيفة 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 صالحة.
  • string
  • byte[]
  • POCO - يتم تنسيق الرسالة ككائن C#. للحصول على التعليمات البرمجية الكاملة، راجع مثال C#‎.

للحصول على مثال كامل، راجع مثال C#‎.

تتوفر رسالة قائمة الانتظار عبر 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 للتكوين لتطبيق الوظائف.

VNETToggle

في CLI، يمكنك تمكين مراقبة مقياس وقت التشغيل باستخدام الأمر التالي:

az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites

مراقبة نقطة نهاية RabbitMQ

لمراقبة قوائم الانتظار والتبادلات الخاصة بك لنقطة نهاية RabbitMQ معينة:

الخطوات التالية