نظرة عامة إلى مخرجات ارتباط RabbitMQ لـ Azure Functions

ملاحظة

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

استخدام ربط إخراج RabbitMQ لإرسال رسائل إلى قائمة انتظار RabbitMQ.

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

مثال

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

يُظهر المثال التالي دالة 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.

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