مشاركة عبر


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

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

إشعار

يتم دعم روابط RabbitMQ بشكل كامل فقط على خطط Elastic Premium و Dedicated (App Service). خطط الاستهلاك والاستهلاك المرنة غير مدعومة حتى الآن.

روابط RabbitMQ غير مدعومة من قبل وقت تشغيل Azure Functions v1.x.

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

مثال

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

  • نموذج العامل المعزول: دالة C# المترجمة التي يتم تشغيلها في عملية عامل معزولة عن وقت التشغيل. مطلوب عملية عامل معزولة لدعم وظائف C# التي تعمل على إصدارات الدعم طويل المدى (LTS) والإصدارات غير LTS ل .NET و.NET Framework.
  • نموذج قيد المعالجة: دالة C# المحولة برمجيا التي تعمل في نفس العملية مثل وقت تشغيل Azure Functions.
  • البرنامج النصي C#: يستخدم بشكل أساسي عند إنشاء وظائف C# في مدخل Microsoft Azure.

هام

سينتهي الدعم للنموذج قيد التنفيذ في 10 نوفمبر 2026. نوصي بشدة بترحيل تطبيقاتك إلى نموذج العامل المعزول للحصول على الدعم الكامل.

[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
    FunctionContext context)
{
    var logger = context.GetLogger(nameof(RabbitMQFunction));

    logger.LogInformation(item);

    var message = $"Output message created at {DateTime.Now}";
    return message;
}

تستخدم وظيفة 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)

أمثلة PowerShell غير متوفرة حاليا.

السمات

تستخدم RabbitMQTriggerAttribute كل من عمليات العامل المعزولة ومكتبات C#‎ قيد المعالجة لتعريف الدالة، حيث تعتمد خصائص معينة للسمة على إصدار الملحق.

تقبل الدالة الإنشائية للسمة هذه المعلمات:

المعلمة ‏‏الوصف‬
اسم قائمة الانتظار اسم قائمة الانتظار التي يمكن تلقي الرسائل منها.
اسم المضيف لم تعد هذه المعلمة مدعومة ويتم تجاهلها. ستتم إزالته في إصدار مستقبلي.
ConnectionStringSetting اسم إعداد التطبيق الذي يحتوي على سلسلة الاتصال لخادم RabbitMQ. يأخذ هذا الإعداد اسم مفتاح إعداد التطبيق فقط، ولا يمكنك تعيين قيمة سلسلة اتصال مباشرة. لمزيد من المعلومات، راجع الاتصالات.
UserNameSetting لم تعد هذه المعلمة مدعومة ويتم تجاهلها. ستتم إزالته في إصدار مستقبلي.
تحديد كلمة المرور لم تعد هذه المعلمة مدعومة ويتم تجاهلها. ستتم إزالته في إصدار مستقبلي.
منفذ يستدعي أو يعين المنفذ المستخدم. الافتراضات إلى 0، مما يشير إلى إعداد المنفذ الافتراضي لعميل RabbitMQ5672.

تعليقات توضيحية

يسمح التعليق التوضيحي RabbitMQTrigger لك بإنشاء وظيفة تعمل عند إنشاء رسالة RabbitMQ.

يدعم الشرح خيارات التشكيل التالية:

المعلمة ‏‏الوصف‬
اسم قائمة الانتظار اسم قائمة الانتظار التي يمكن تلقي الرسائل منها.
connectionStringSetting اسم إعداد التطبيق الذي يحتوي على سلسلة الاتصال لخادم RabbitMQ. يأخذ هذا الإعداد اسم مفتاح إعداد التطبيق فقط، ولا يمكنك تعيين قيمة سلسلة اتصال مباشرة. لمزيد من المعلومات، راجع الاتصالات.
disableCertificateValidation القيمة المنطقية التي يمكن تعيينها إلى تشير إلى true أنه يجب تعطيل التحقق من صحة الشهادة. القيمة الافتراضية هي false. غير مستحسن للإنتاج. لا ينطبق عند تعطيل SSL.

التكوين

يشرح الجدول الآتي خصائص تكوين ربط البيانات التي عليك تعيينها في ملف function.json.

خاصية function.json ‏‏الوصف‬
النوع يجب تعيينه إلى RabbitMQTrigger.
الاتجاه يجب تعيينه إلى in.
الاسم اسم المتغير الذي يمثل قائمة الانتظار في التعليمة البرمجية للدالة.
اسم قائمة الانتظار اسم قائمة الانتظار التي يمكن تلقي الرسائل منها.
connectionStringSetting اسم إعداد التطبيق الذي يحتوي على سلسلة الاتصال لخادم RabbitMQ. يأخذ هذا الإعداد اسم مفتاح إعداد التطبيق فقط، ولا يمكنك تعيين قيمة سلسلة اتصال مباشرة. لمزيد من المعلومات، راجع الاتصالات.
disableCertificateValidation القيمة المنطقية التي يمكن تعيينها إلى تشير إلى true أنه يجب تعطيل التحقق من صحة الشهادة. القيمة الافتراضية هي false. غير مستحسن للإنتاج. لا ينطبق عند تعطيل SSL.

عندما تقوم بالتطوير محليًا، أضف إعدادات التطبيق في ملف local.settings.json في المجموعة Values.

راجع قسم Example للحصول على أمثلة كاملة.

الاستخدام

يعتمد نوع المعلمة المدعوم من مشغل RabbitMQ على طريقة C# المستخدمة.

تدعم روابط RabbitMQ حاليًا أنواع العناصر القابلة للتسلسل والسلسلة فحسب عند التشغيل في عملية معزولة.

رسالة قائمة الانتظار متاحة عبر context.bindings.<NAME>المكان <NAME>الذي يطابق فيه الاسم المحدد في unfection.json. إذا كانت البيانات الأساسية JavaScript Object Notation، يتم إلغاء تسلسل القيمة في العنصر.

اتصالات

هام

لا يدعم ربط RabbitMQ مصادقة Microsoft Entra والهويات المدارة. يمكنك استخدام Azure Key Vault لإدارة سلسلة الاتصال RabbitMQ مركزيا. لمعرفة المزيد، راجع إدارة الاتصالات.

بدءا من الإصدار 2.x من الملحق، hostNameuserNameSettingو، وpasswordSetting، لم تعد مدعومة لتعريف اتصال بخادم RabbitMQ. يجب عليك بدلا من ذلك استخدام connectionStringSetting.

connectionStringSetting يمكن للخاصية قبول اسم زوج قيمة المفتاح فقط في إعدادات التطبيق. لا يمكنك تعيين قيمة سلسلة اتصال مباشرة في الربط.

على سبيل المثال، عند التعيين connectionStringSetting إلى rabbitMQConnection في تعريف الربط الخاص بك، يجب أن يحتوي تطبيق الوظائف على إعداد تطبيق يسمى rabbitMQConnection يرجع إما قيمة اتصال مثل amqp://myuser:***@contoso.rabbitmq.example.com:5672 أو مرجع Azure Key Vault.

عند التشغيل محليا، يجب أن يكون لديك أيضا قيمة المفتاح للتعريف connectionStringSetting في ملف local.settings.json . وإلا، فلن يتمكن تطبيقك من الاتصال بالخدمة من الكمبيوتر المحلي ويحدث خطأ.

قوائم الرسائل الخامدة

لا يمكن التحكم في قوائم الرسائل الخامدة والتبادلات أو تكوينها من مشغل RabbitMQ. لاستخدام قوائم انتظار غير المفعول بها، قم بتكوين قائمة الانتظار المستخدمة بواسطة المشغل في RabbitMQ مسبقًا. راجعمستندات RabbitMQ.

تمكين تغيير حجم Runtime

لكي يتم توسيع نطاق المشغل RabbitMQ إلى مثيلات متعددة، يجب تمكين إعداد مراقبة مقياس وقت التشغيل.

في المدخل، يمكن العثور على هذا الإعداد ضمن >إعدادات Function runtime للتكوين لتطبيق الوظائف.

تبديل VNET

في Azure CLI، يمكنك تمكين Runtime Scale Monitoring باستخدام هذا الأمر:

az resource update -resource-group <RESOURCE_GROUP> -name <APP_NAME>/config/web \
    --set properties.functionsRuntimeScaleMonitoringEnabled=1 \
    --resource-type Microsoft.Web/sites

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

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

مقالة ذات صلة