التشغيل السريع: إرسال واستقبال الرسائل من قائمة انتظار ناقل خدمة Azure (.NET)

في هذه البداية السريعة، ستقوم بالخطوات التالية:

  1. إنشاء مساحة اسم Service Bus باستخدام المدخل Azure.

  2. إنشاء قائمة انتظار Service Bus باستخدام المدخل Azure.

  3. اكتب تطبيق وحدة تحكم .NET لإرسال مجموعة من الرسائل إلى قائمة الانتظار.

  4. اكتب تطبيق وحدة تحكم .NET لتلقي هذه الرسائل من قائمة الانتظار.

    إشعار

    توفر هذه البداية السريعة إرشادات تفصيلية لسيناريو بسيط لإرسال مجموعة من الرسائل إلى قائمة انتظار ناقل خدمة Azure وتلقيها منها. للحصول على نظرة عامة حول مكتبة عميل .NET، راجع مكتبة عميل ناقل خدمة Azure لـ .NET. للحصول على مزيد من العينات، راجع عينات .NET الخاصة بناقل خدمة Azure على GitHub.

المتطلبات الأساسية

إذا كنت جديدًا على الخدمة، راجع نظرة عامة على Service Bus قبل إجراء هذا البدء السريع.

  • اشتراك Azure. لاستخدام خدمات Azure، بما في ذلك Azure Service Bus، تحتاج إلى اشتراك. إذا لم يكن لديك حساب Azure موجود، يمكنك الاشتراك في إصدار تجريبي مجاني.
  • Visual Studio 2022. يستخدم نموذج التطبيق الميزات الجديدة التي تم تقديمها في C# 10. لا يزال بإمكانك استخدام مكتبة عميل ناقل خدمة Microsoft Azure مع إصدارات لغة C# السابقة، ولكن قد يختلف بناء الجملة. لاستخدام أحدث بناء جملة، نوصي بتثبيت .NET 6.0 أو أعلى وتعيين إصدار اللغة إلى latest. إذا كنت تستخدم Visual Studio، فإن الإصدارات قبل Visual Studio 2022 غير متوافقة مع الأدوات اللازمة لإنشاء مشاريع C# 10.

إنشاء مساحة اسم في مدخل Microsoft Azure

لبدء استخدام الكيانات المراسلة "ناقل الخدمة" في Azure، يجب أولاً إنشاء مساحة اسم باسم مميز عبر Azure. توفر مساحة الاسم حاوية تحديد النطاق لموارد ناقل خدمة Microsoft Azure (قوائم الانتظار والموضوعات وما إلى ذلك) داخل التطبيق الخاص بك.

لإنشاء مساحة اسم:

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. انتقل إلى صفحة جميع الخدمات.

  3. في شريط التنقل الأيسر، حدد Integration من قائمة الفئات، وقم بتمرير الماوس فوق ناقل خدمة Microsoft Azure، ثم حدد + الزر على لوحة Service Bus.

    Image showing selection of Create a resource, Integration, and then Service Bus in the menu.

  4. في علامة التبويب "Basics" في صفحة "Create namespace" اتبع الخطوات الآتية:

    1. بالنسبة إلى Subscription، اختر اشتراك Azure لإنشاء مساحة الاسم.

    2. بالنسبة إلى "Resource group"، اختر مجموعة موارد موجودة حيث توجد مساحة الاسم، أو قم بإنشاء مجموعة موارد جديدة.

    3. أدخل name لمساحة الاسم. يجب أن يلتزم اسم مساحة الاسم باصطلاحات التسمية التالية:

      • يجب أن يكون الاسم فريدًا عبر Azure. يتحقق النظام على الفور لمعرفة ما إذا كان الاسم متوفرًا.
      • ألا يقل طول الاسم عن 6 أحرف ولا يزيد عن 50 حرفاً.
      • لا يمكن أن يحتوي الاسم إلا على أحرف وأرقام وواصلات "-".
      • يجب أن يبدأ الاسم وينتهي بحرف أو رقم.
      • ألا ينتهي الاسم بـ "-sb" أو "-mgmt".
    4. بالنسبة إلى "Location"، اختر المنطقة التي ينبغي استضافة مساحة الاسم فيها.

    5. بالنسبة إلى "Pricing tier"، حدد مستوى التسعير (Basic أو Standard أو Premium) لمساحة الاسم. بالنسبة لهذا التشغيل السريع، حدد Standard.

      هام

      وإذا كنت ترغب في استخدام الموضوعات والاشتراكات، فاختر إما "Standard" أو "Premium". فإن الموضوعات/الاشتراكات غير مدعومة في مستوى التسعير الأساسي.

      وإذا حددت مستوى التسعير "Premium"، فحدد عدد وحدات المراسلة. ويوفر المستوى المميز عزل الموارد على مستوى وحدة المعالجة المركزية والذاكرة بحيث يتم تشغيل كل حمل عمل على حدة. تسمى حاوية المورد هذه وحدة المراسلة. وتحتوي مساحة الاسم المميزة على وحدة مراسلة واحدة على الأقل. ويمكنك تحديد وحدات المراسلة 1 أو 2 أو 4 أو 8 أو 16 لكل مساحة اسم مميزة لناقل خدمة Azure. ولمزيد من المعلومات، راجع المراسلة المميزة لناقل خدمة Microsoft Azure.

    6. حدد مراجعة + إنشاء عند أسفل الصفحة.

      Image showing the Create a namespace page

    7. في صفحة "Review + create"، راجع الإعدادات ثم حدد "Create".

  5. بمجرد نجاح نشر المورد، حدد Go to resource في صفحة التوزيع.

    Image showing the deployment succeeded page with the Go to resource link.

  6. راجع الصفحة الرئيسية لمساحة اسم ناقل الخدمة.

    Image showing the home page of the Service Bus namespace created.

إنشاء قائمة الانتظار في مدخل Azure

  1. في الصفحة Service Bus Namespace، حدد قوائم الانتظار في قائمة التنقل اليمنى.

  2. في صفحة قوائم الانتظار، حدد + قائمة انتظار في شريط الأدوات.

  3. أدخل اسمًا لقائمة الانتظار، واترك القيم الأخرى بإعداداتها الافتراضية.

  4. الآن، حدد إنشاء.

    Image showing creation of a queue in the portal

هام

إذا كنت مستخدما جديدا ل Azure، فقد تجد خيار سلسلة الاتصال ion أسهل في المتابعة. حدد علامة التبويب الاتصال ion String للاطلاع على إرشادات حول استخدام سلسلة الاتصال في هذا التشغيل السريع. نوصي باستخدام الخيار Passwordless في تطبيقات العالم الحقيقي وبيئات الإنتاج.

مصادقة التطبيق إلى Azure

تظهر لك هذه البداية السريعة طريقتين للاتصال ناقل خدمة Azure: بدون كلمة مرور سلسلة الاتصال.

يوضح لك الخيار الأول كيفية استخدام أساس الأمان في معرف Microsoft Entra والتحكم في الوصول المستند إلى الدور (RBAC) للاتصال بمساحة اسم ناقل خدمة Microsoft Azure. لا داعي للقلق بشأن وجود تعليمات برمجية مضمنة سلسلة الاتصال في التعليمات البرمجية الخاصة بك أو في ملف تكوين أو في تخزين آمن مثل Azure Key Vault.

يوضح لك الخيار الثاني كيفية استخدام سلسلة الاتصال للاتصال بمساحة اسم ناقل خدمة Microsoft Azure. إذا كنت جديدا على Azure، فقد تجد خيار سلسلة الاتصال أسهل في المتابعة. نوصي باستخدام الخيار بدون كلمة مرور في التطبيقات وبيئات الإنتاج في العالم الحقيقي. لمزيد من المعلومات، راجع المصادقة والتخويل. يمكنك أيضا قراءة المزيد حول المصادقة بدون كلمة مرور في صفحة النظرة العامة.

تعيين أدوار لمستخدم Microsoft Entra

عند التطوير محليا، تأكد من أن حساب المستخدم الذي يتصل ناقل خدمة Azure لديه الأذونات الصحيحة. ستحتاج إلى دور مالك البيانات ناقل خدمة Azure لإرسال الرسائل وتلقيها. لتعيين هذا الدور لنفسك، ستحتاج إلى دور المستخدم Access مسؤول istrator أو دور آخر يتضمن Microsoft.Authorization/roleAssignments/write الإجراء. يمكنك تعيين أدوار Azure RBAC لمستخدم باستخدام مدخل Microsoft Azure أو Azure CLI أو Azure PowerShell. تعرف على المزيد حول النطاقات المتوفرة لتعيينات الأدوار في صفحة نظرة عامة على النطاق.

يعين Azure Service Bus Data Owner المثال التالي الدور لحساب المستخدم الخاص بك، والذي يوفر الوصول الكامل إلى موارد ناقل خدمة Azure. في سيناريو حقيقي، اتبع مبدأ الامتياز الأقل لمنح المستخدمين الحد الأدنى فقط من الأذونات اللازمة لبيئة إنتاج أكثر أمانا.

أدوار Azure المضمنة لناقل خدمة Azure

بالنسبة إلى ناقل خدمة Azure، تتم حماية إدارة مساحات الأسماء وجميع الموارد المرتبطة بها من خلال مدخل Azure وواجهة برمجة التطبيقات لإدارة الموارد Azure بالفعل باستخدام نموذج Azure RBAC. يوفر Azure أدوار Azure المضمنة أدناه لتخويل الوصول إلى مساحة اسم "ناقل الخدمة":

  • ناقل خدمة Azure مالك البيانات: تمكين الوصول إلى البيانات إلى مساحة اسم ناقل خدمة Microsoft Azure وكياناته (قوائم الانتظار والموضوعات والاشتراكات وعوامل التصفية). يمكن لعضو هذا الدور إرسال رسائل وتلقيها من قوائم الانتظار أو الموضوعات/الاشتراكات.
  • ناقل خدمة Azure Data Sender: استخدم هذا الدور لمنح وصول الإرسال إلى مساحة اسم ناقل خدمة Microsoft Azure والكيانات الخاصة به.
  • ناقل خدمة Azure Data Receiver: استخدم هذا الدور لمنح وصول الاستلام إلى مساحة اسم ناقل خدمة Microsoft Azure وكياناته.

إذا كنت ترغب في إنشاء دور مخصص، فشاهد الحقوق المطلوبة لعمليات ناقل خدمة Microsoft Azure.

إضافة مستخدم Microsoft Entra إلى دور مالك ناقل خدمة Azure

أضف اسم مستخدم Microsoft Entra إلى دور مالك البيانات ناقل خدمة Azure على مستوى مساحة اسم ناقل خدمة Microsoft Azure. سيسمح لتطبيق يعمل في سياق حساب المستخدم الخاص بك بإرسال رسائل إلى قائمة انتظار أو موضوع، وتلقي رسائل من قائمة انتظار أو اشتراك موضوع.

هام

في معظم الحالات، سيستغرق نشر تعيين الدور في Azure دقيقة أو دقيقتين. في حالات نادرة، قد يستغرق الأمر ما يصل إلى ثماني دقائق. إذا تلقيت أخطاء المصادقة عند تشغيل التعليمات البرمجية لأول مرة، فانتظر بضع لحظات وحاول مرة أخرى.

  1. إذا لم تكن صفحة مساحة اسم ناقل خدمة Microsoft Azure مفتوحة في مدخل Microsoft Azure، فحدد موقع مساحة اسم ناقل الخدمة باستخدام شريط البحث الرئيسي أو التنقل الأيسر.

  2. في صفحة النظرة العامة، حدد Access control (IAM) من القائمة اليسرى.

  3. حدد صفحة التحكم بالوصول (IAM)، وحدد علامة تبويب تعيينات الدور.

  4. حدد + إضافة من القائمة العلوية ثم إضافة تعيين الدور من القائمة المنسدلة الناتجة.

    A screenshot showing how to assign a role.

  5. استخدم مربع البحث لتصفية النتائج إلى الدور المطلوب. في هذا المثال، ابحث Azure Service Bus Data Owner عن النتيجة المطابقة وحددها. ثم اختر التالي.

  6. ضمن تعيين الوصول إلى، حدد المستخدم أو المجموعة أو كيان الخدمة، ثم اختر + تحديد الأعضاء.

  7. في مربع الحوار، ابحث عن اسم مستخدم Microsoft Entra (عنوان بريدك الإلكتروني user@domain عادة) ثم اختر تحديد في أسفل مربع الحوار.

  8. حدد مراجعة + تعيين للانتقال إلى الصفحة النهائية، ثم مراجعة + تعيين مرة أخرى لإكمال العملية.

تشغيل Visual Studio وتسجيل الدخول إلى Azure

يمكنك تخويل الوصول إلى مساحة اسم ناقل الخدمة باستخدام الخطوات التالية:

  1. قم بتشغيل Visual Studio. إذا رأيت نافذة بدء الاستخدام ، فحدد الارتباط متابعة بدون تعليمات برمجية في الجزء الأيمن.

  2. حدد زر تسجيل الدخول في الجزء العلوي الأيمن من Visual Studio.

    Screenshot showing a button to sign in to Azure using Visual Studio.

  3. تسجيل الدخول باستخدام حساب Microsoft Entra الذي قمت بتعيين دور له مسبقا.

    Screenshot showing the account selection.

إرسال رسائل إلى قائمة الانتظار

يوضح لك هذا القسم كيفية إنشاء تطبيق وحدة تحكم .NET لإرسال رسائل إلى قائمة انتظار ناقل خدمة Microsoft Azure.

إشعار

توفر هذه البداية السريعة إرشادات تفصيلية لسيناريو بسيط لإرسال مجموعة من الرسائل إلى قائمة انتظار ناقل خدمة Azure وتلقيها منها. لمزيد من العينات حول السيناريوهات الأخرى والمتقدمة، راجع عينات .NET الخاصة بناقل الخدمة على GitHub.

قم بإنشاء تطبيق وحدة تحكم

  1. في Visual Studio، حدد File ->New ->Project menu.

  2. في مربع حوار إنشاء مشروع جديد، نفِّذ الخطوات التالية: في حال عدم رؤية مربع الحوار هذا، حدد ملف من القائمة، وحدد جديد، ثم حدد مشروع.

    1. قم بتحديد C#‎ للغة البرمجة.

    2. قم بتحديد Console لنوع التطبيق.

    3. حدد Console App من قائمة النتائج.

    4. ثم حدد التالي.

      Image showing the Create a new project dialog box with C# and Console selected

  3. قم بإدخال QueueSender لاسم المشروع، ServiceBusQueue البدء السريع لاسم الحل، ثم حدد Next.

    Image showing the solution and project names in the Configure your new project dialog box

  4. في الصفحة Additional information، حدد Create لإنشاء الحل والمشروع.

إضافة حزم NuGet إلى المشروع

  1. حدد Tools>NuGet Package Manager>Package Manager Console من القائمة.

  2. قم بتشغيل الأمر التالي لتثبيت حزمة Azure.Messaging.ServiceBus NuGet.

    Install-Package Azure.Messaging.ServiceBus
    
  3. قم بتشغيل الأمر التالي لتثبيت حزمة Azure.Identity NuGet.

    Install-Package Azure.Identity
    

إضافة تعليمات برمجية لإرسال رسائل إلى قائمة الانتظار

  1. استبدل محتويات Program.cs بالتعليمة البرمجية التالية. يتم توضيح الخطوات المهمة في القسم التالي، مع معلومات إضافية في تعليقات التعليمات البرمجية.

    هام

    تحديث قيم العنصر النائب (<NAMESPACE-NAME> و <QUEUE-NAME>) في مقتطف التعليمات البرمجية بأسماء مساحة اسم ناقل خدمة Microsoft Azure وقائمة الانتظار.

    using Azure.Messaging.ServiceBus;
    using Azure.Identity;
    
    // name of your Service Bus queue
    // the client that owns the connection and can be used to create senders and receivers
    ServiceBusClient client;
    
    // the sender used to publish messages to the queue
    ServiceBusSender sender;
    
    // number of messages to be sent to the queue
    const int numOfMessages = 3;
    
    // The Service Bus client types are safe to cache and use as a singleton for the lifetime
    // of the application, which is best practice when messages are being published or read
    // regularly.
    //
    // Set the transport type to AmqpWebSockets so that the ServiceBusClient uses the port 443. 
    // If you use the default AmqpTcp, ensure that ports 5671 and 5672 are open.
    var clientOptions = new ServiceBusClientOptions
    { 
        TransportType = ServiceBusTransportType.AmqpWebSockets
    };
    //TODO: Replace the "<NAMESPACE-NAME>" and "<QUEUE-NAME>" placeholders.
    client = new ServiceBusClient(
        "<NAMESPACE-NAME>.servicebus.windows.net",
        new DefaultAzureCredential(),
        clientOptions);
    sender = client.CreateSender("<QUEUE-NAME>");
    
    // create a batch 
    using ServiceBusMessageBatch messageBatch = await sender.CreateMessageBatchAsync();
    
    for (int i = 1; i <= numOfMessages; i++)
    {
        // try adding a message to the batch
        if (!messageBatch.TryAddMessage(new ServiceBusMessage($"Message {i}")))
        {
            // if it is too large for the batch
            throw new Exception($"The message {i} is too large to fit in the batch.");
        }
    }
    
    try
    {
        // Use the producer client to send the batch of messages to the Service Bus queue
        await sender.SendMessagesAsync(messageBatch);
        Console.WriteLine($"A batch of {numOfMessages} messages has been published to the queue.");
    }
    finally
    {
        // Calling DisposeAsync on client types is required to ensure that network
        // resources and other unmanaged objects are properly cleaned up.
        await sender.DisposeAsync();
        await client.DisposeAsync();
    }
    
    Console.WriteLine("Press any key to end the application");
    Console.ReadKey();
    
  2. أنشئ المشروع، وتأكد من عدم وجود أخطاء.

  3. شغِّل البرنامج وانتظر رسالة التأكيد.

    A batch of 3 messages has been published to the queue
    

    هام

    في معظم الحالات، سيستغرق نشر تعيين الدور في Azure دقيقة أو دقيقتين. في حالات نادرة، قد يستغرق الأمر ما يصل إلى ثماني دقائق. إذا تلقيت أخطاء المصادقة عند تشغيل التعليمات البرمجية لأول مرة، فانتظر بضع لحظات وحاول مرة أخرى.

  4. في المدخل Azure، اتبع الخطوات التالية:

    1. انتقل إلى مساحة اسم Service Bus.

    2. في الصفحة نظرة عامة، حدد قائمة الانتظار في الجزء السفلي الأوسط.

      Image showing the Service Bus Namespace page in the Azure portal with the queue selected.

    3. قم بملاحظة القيم في قسم أساسيات.

      Image showing the number of messages received and the size of the queue.

    تحديث القيم التالية:

    • قيمة عدد الرسائل النشطة لقائمة الانتظار الآن 3. في كل مرة تقوم فيها بتشغيل تطبيق المرسل هذا دون استرداد الرسائل، تزداد هذه القيمة بمقدار 3.
    • يتزايد الحجم الحالي لقائمة الانتظار في كل مرة يضيف فيها التطبيق رسائل إلى قائمة الانتظار.
    • في مخطط الرسائل في قسم المقاييس السفلي، يمكنك مشاهدة وجود ثلاث رسائل واردة لقائمة الانتظار.

تلقي الرسائل من قائمة الانتظار

في هذا القسم، يمكنك إنشاء تطبيق وحدة تحكم .NET الذي يتلقى رسائل من قائمة الانتظار.

إشعار

يوفر هذا التشغيل السريع إرشادات خطوة بخطوة لتنفيذ سيناريو إرسال دفعة من الرسائل إلى قائمة انتظار ناقل خدمة Microsoft Azure ثم تلقيها. لمزيد من العينات حول السيناريوهات الأخرى والمتقدمة، راجع عينات .NET الخاصة بناقل الخدمة على GitHub.

إنشاء مشروع لجهاز الاستقبال

  1. في النافذة Solution Explorer، انقر بزر الماوس الأيمن فوق الحل ServiceBusQueueQuickStart، ثم أشر إلى Add، وحدد New Project.
  2. قم بتحديد Console application ثم حدد Next.
  3. أدخل QueueReceiver لخانة Project name وحدد Create.
  4. في نافذة مستكشف الحلول، انقر بزر الماوس الأيمن فوق QueueReceiver، وحدد Set as a Startup Project.

إضافة حزم NuGet إلى المشروع

  1. حدد Tools>NuGet Package Manager>Package Manager Console من القائمة.

  2. حدد QueueReceiver للمشروع الافتراضي.

    Screenshot showing QueueReceiver project selected in the Package Manager Console.

  3. قم بتشغيل الأمر التالي لتثبيت حزمة Azure.Messaging.ServiceBus NuGet.

    Install-Package Azure.Messaging.ServiceBus
    
  4. قم بتشغيل الأمر التالي لتثبيت حزمة Azure.Identity NuGet.

    Install-Package Azure.Identity
    

إضافة التعليمات البرمجية لتلقي الرسائل من قائمة الانتظار

في هذا القسم، يمكنك إضافة تعليمة برمجية لاسترداد الرسائل من قائمة الانتظار.

  1. Program ضمن الفئة ، أضف التعليمات البرمجية التالية:

    using System.Threading.Tasks;
    using Azure.Identity;
    using Azure.Messaging.ServiceBus;
    
    // the client that owns the connection and can be used to create senders and receivers
    ServiceBusClient client;
    
    // the processor that reads and processes messages from the queue
    ServiceBusProcessor processor;
    
  2. إلحاق الأساليب التالية بنهاية Program الفئة.

    // handle received messages
    async Task MessageHandler(ProcessMessageEventArgs args)
    {
        string body = args.Message.Body.ToString();
        Console.WriteLine($"Received: {body}");
    
        // complete the message. message is deleted from the queue. 
        await args.CompleteMessageAsync(args.Message);
    }
    
    // handle any errors when receiving messages
    Task ErrorHandler(ProcessErrorEventArgs args)
    {
        Console.WriteLine(args.Exception.ToString());
        return Task.CompletedTask;
    }
    
  3. إلحاق التعليمات البرمجية التالية بنهاية Program الفئة. يتم توضيح الخطوات المهمة في القسم التالي، مع معلومات إضافية في تعليقات التعليمات البرمجية.

    • إنشاء كائن ServiceBusClient باستخدام DefaultAzureCredential الكائن . DefaultAzureCredentialيكتشف تلقائيا بيانات اعتماد تسجيل الدخول إلى Visual Studio ويستخدمها للمصادقة على ناقل خدمة Azure.
    • استدعاء الأسلوب CreateProcessor على الكائن ServiceBusClient لإنشاء كائن ServiceBusProcessor لقائمة انتظار Service Bus معينة.
    • تحديد معالجات الحدثين ProcessMessageAsync وProcessErrorAsync للكائن ServiceBusProcessor.
    • بدء معالجة الرسائل عن طريق استدعاء StartProcessingAsync على الكائن ServiceBusProcessor.
    • عندما يضغط المستخدم فوق مفتاح لإنهاء المعالجة، يستدعي StopProcessingAsync على الكائن ServiceBusProcessor.

    هام

    تحديث قيم العنصر النائب (<NAMESPACE-NAME> و <QUEUE-NAME>) في مقتطف التعليمات البرمجية بأسماء مساحة اسم ناقل خدمة Microsoft Azure وقائمة الانتظار.

    // The Service Bus client types are safe to cache and use as a singleton for the lifetime
    // of the application, which is best practice when messages are being published or read
    // regularly.
    //
    // Set the transport type to AmqpWebSockets so that the ServiceBusClient uses port 443. 
    // If you use the default AmqpTcp, make sure that ports 5671 and 5672 are open.
    
    // TODO: Replace the <NAMESPACE-NAME> placeholder
    var clientOptions = new ServiceBusClientOptions()
    {
        TransportType = ServiceBusTransportType.AmqpWebSockets
    };
    client = new ServiceBusClient(
        "<NAMESPACE-NAME>.servicebus.windows.net",
        new DefaultAzureCredential(),
        clientOptions);
    
    // create a processor that we can use to process the messages
    // TODO: Replace the <QUEUE-NAME> placeholder
    processor = client.CreateProcessor("<QUEUE-NAME>", new ServiceBusProcessorOptions());
    
    try
    {
        // add handler to process messages
        processor.ProcessMessageAsync += MessageHandler;
    
        // add handler to process any errors
        processor.ProcessErrorAsync += ErrorHandler;
    
        // start processing 
        await processor.StartProcessingAsync();
    
        Console.WriteLine("Wait for a minute and then press any key to end the processing");
        Console.ReadKey();
    
        // stop processing 
        Console.WriteLine("\nStopping the receiver...");
        await processor.StopProcessingAsync();
        Console.WriteLine("Stopped receiving messages");
    }
    finally
    {
        // Calling DisposeAsync on client types is required to ensure that network
        // resources and other unmanaged objects are properly cleaned up.
        await processor.DisposeAsync();
        await client.DisposeAsync();
    }
    
  4. يجب أن تتطابق الفئة المكتملة Program مع التعليمات البرمجية التالية:

    using System.Threading.Tasks;
    using Azure.Messaging.ServiceBus;
    using Azure.Identity;
    
    // the client that owns the connection and can be used to create senders and receivers
    ServiceBusClient client;
    
    // the processor that reads and processes messages from the queue
    ServiceBusProcessor processor;
    
    // The Service Bus client types are safe to cache and use as a singleton for the lifetime
    // of the application, which is best practice when messages are being published or read
    // regularly.
    //
    // Set the transport type to AmqpWebSockets so that the ServiceBusClient uses port 443.
    // If you use the default AmqpTcp, make sure that ports 5671 and 5672 are open.
    
    // TODO: Replace the <NAMESPACE-NAME> and <QUEUE-NAME> placeholders
    var clientOptions = new ServiceBusClientOptions() 
    {
        TransportType = ServiceBusTransportType.AmqpWebSockets
    };
    client = new ServiceBusClient("<NAMESPACE-NAME>.servicebus.windows.net", 
        new DefaultAzureCredential(), clientOptions);
    
    // create a processor that we can use to process the messages
    // TODO: Replace the <QUEUE-NAME> placeholder
    processor = client.CreateProcessor("<QUEUE-NAME>", new ServiceBusProcessorOptions());
    
    try
    {
        // add handler to process messages
        processor.ProcessMessageAsync += MessageHandler;
    
        // add handler to process any errors
        processor.ProcessErrorAsync += ErrorHandler;
    
        // start processing 
        await processor.StartProcessingAsync();
    
        Console.WriteLine("Wait for a minute and then press any key to end the processing");
        Console.ReadKey();
    
        // stop processing 
        Console.WriteLine("\nStopping the receiver...");
        await processor.StopProcessingAsync();
        Console.WriteLine("Stopped receiving messages");
    }
    finally
    {
        // Calling DisposeAsync on client types is required to ensure that network
        // resources and other unmanaged objects are properly cleaned up.
        await processor.DisposeAsync();
        await client.DisposeAsync();
    }
    
    // handle received messages
    async Task MessageHandler(ProcessMessageEventArgs args)
    {
        string body = args.Message.Body.ToString();
        Console.WriteLine($"Received: {body}");
    
        // complete the message. message is deleted from the queue. 
        await args.CompleteMessageAsync(args.Message);
    }
    
    // handle any errors when receiving messages
    Task ErrorHandler(ProcessErrorEventArgs args)
    {
        Console.WriteLine(args.Exception.ToString());
        return Task.CompletedTask;
    }
    
  5. أنشئ المشروع، وتأكد من عدم وجود أخطاء.

  6. استخدم تطبيق المستلم. يجب أن تشاهد الرسائل المستلمة. قم بالضغط على أي مفتاح لإيقاف جهاز الاستقبال والتطبيق.

    Wait for a minute and then press any key to end the processing
    Received: Message 1
    Received: Message 2
    Received: Message 3
    
    Stopping the receiver...
    Stopped receiving messages
    
  7. قم بالتحقق من المدخل مرة أخرى. يجب عليك الانتظار لبضع دقائق ثم قم بتحديث الصفحة إذا لم تشاهد 0 الرسائل النشطة.

    • عدد الرسائل النشطة وقيم الحجم الحالي هي الآن 0.

    • في مخطط Messages في القسم Metrics السفلية، يمكنك مشاهدة أن هناك ثلاث رسائل واردة وثلاث رسائل صادرة لقائمة الانتظار.

      Screenshot showing active messages and size after receive.

تنظيف الموارد

انتقل إلى مساحة اسم ناقل خدمة Microsoft Azure في مدخل Microsoft Azure، وحدد Delete على مدخل Microsoft Azure لحذف مساحة الاسم وقائمة الانتظار فيها.

(راجع أيضًا )

راجع الوثائق والعينات التالية:

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