بدء استخدام موضوعات واشتراكات Azure Service Bus

يوضح هذا التشغيل السريع كيفية إرسال رسائل إلى موضوع نقل خدمة Azure وتلقي رسائل اشتراك في هذا الموضوع باستخدام مكتبة .NET Azure.Messaging.ServiceBus.

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

  1. إنشاء مساحة اسم Service Bus باستخدام المدخل Azure.
  2. إنشاء قائمة انتظار ناقل خدمة Azure باستخدام المنفذ Azure.
  3. أنشئ اشتراك ناقل خدمة Azure إلى هذا الموضوع باستخدام منفذ Azure
  4. اكتب تطبيق وحدة تحكم .NET لإرسال مجموعة من الرسائل إلى الموضوع.
  5. اكتب تطبيق وحدة تحكم .NET لتلقي هذه الرسائل من الاشتراك.

إشعار

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

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

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

إذا كنت جديدًا على الخدمة، راجع نظرة عامة على 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 وحددالموضوعاتفي القائمة اليسرى.

  2. اخترحفظ في شريط الأدوات.

  3. أدخل اسمالموضوع. اترك الخيارات الأخرى بقيمها الافتراضية.

  4. حدد إنشاء.

    Image showing the Create topic page.

إنشاء اشتراك في الموضوع.

  1. حدد الموضوعالذي أنشأته في القسم السابق.

    Image showing the selection of topic from the list of topics.

  2. في صفحة Service Bus Topic حدد+ Subscriptionعلى شريط الأدوات

    Image showing the Add subscription button.

  3. في صفحة Create subscription، اتبع الخطوات التالية:

    1. أدخل S1لاسم الاشتراك.

    2. أدخل 3 لعدد التسليم الأقصى.

    3. ثم حدد Createلإنشاء الاشتراك.

      Image showing the Create subscription page.

مصادقة التطبيق إلى 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 the 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. أدخل TopicSender لاسم المشروع، ServiceBusTopicQuickStart لاسم الحل، ثم حدد Next.
  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 بالشفرة التالية. يتم توضيح الخطوات المهمة في هذا القسم، مع معلومات إضافية في تعليقات التعليمات البرمجية.

    1. إنشاء كائن ServiceBusClient باستخدام DefaultAzureCredential الكائن . DefaultAzureCredentialيكتشف تلقائيا بيانات اعتماد تسجيل الدخول إلى Visual Studio ويستخدمها للمصادقة على ناقل خدمة Azure.
    2. استدعاء الأسلوب CreateSender على الكائن ServiceBusClient لإنشاء الكائن ServiceBusSender لموضوع Service Bus معين.
    3. إنشاء كائن ServiceBusMessageBatch باستخدام ServiceBusSender.CreateMessageBatchAsync.
    4. إضافة رسائل إلى المجموعة باستخدام ServiceBusMessageBatch.TryAddMessage.
    5. إرسال مجموعة من الرسائل إلى موضوع Service Bus باستخدام الأسلوب ServiceBusSender.SendMessagesAsync.

    هام

    تحديث قيم العنصر النائب (<NAMESPACE-NAME> و <TOPIC-NAME>) في مقتطف التعليمات البرمجية بأسماء مساحة اسم Service Bus والموضوع.

    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 sender used to publish messages to the topic
    ServiceBusSender sender;
    
    // number of messages to be sent to the topic
    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.
    
    //TODO: Replace the "<NAMESPACE-NAME>" and "<TOPIC-NAME>" placeholders.
    client = new ServiceBusClient(
        "<NAMESPACE-NAME>.servicebus.windows.net",
        new DefaultAzureCredential());
    sender = client.CreateSender("<TOPIC-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 topic
        await sender.SendMessagesAsync(messageBatch);
        Console.WriteLine($"A batch of {numOfMessages} messages has been published to the topic.");
    }
    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 topic
    

    هام

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

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

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

    2. في الصفحة Overview، في الجزء السفلي الأوسط، قم بالتبديل إلى علامة التبويب Topics، وحدد موضوع Service Bus. في المثال التالي، يكون mytopic.

      Select topic

    3. في الصفحة Service Bus Topic، في المخطط Messages في القسم السفلي Metrics، يمكنك ملاحظة وجود ثلاث رسائل واردة للموضوع. إذا لم تتمكن من رؤية القيمة، فانتظر لبضع دقائق، وقم بتحديث الصفحة لرؤية المخطط المحدث.

      Messages sent to the topic

    4. حدد الاشتراك في الجزء السفلي. في المثال التالي، يكون S1. في الصفحة Service Bus Subscription، تلاحظ Active message count كـ 3. تلقى الاشتراك الرسائل الثلاث التي أرسلتها إلى الموضوع، ولكن لم يقم أي جهاز استقبال باختيارها بعد.

      Messages received at the subscription

تلقي رسائل من اشتراك

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

إشعار

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

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

  1. في النافذة Solution Explorer، انقر بزر الماوس الأيمن فوق الحل ServiceBusTopicQuickStart، ثم أشر إلى Add، وحدد New Project.
  2. قم بتحديد Console application ثم حدد Next.
  3. أدخل EventHubsReceiver لـ Project name وحدد Next.
  4. في الصفحة Additional information، حدد Create.
  5. في النافذة Solution Explorer، انقر بزر الماوس الأيمن فوق SubscriptionReceiver، وحدد Set as a Startup Project.

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

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

  2. حدد SubscriptionReceiver للقائمة المنسدلة للمشروع الافتراضي.

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

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

    Install-Package Azure.Identity
    

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

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

  1. استبدل محتويات الموجودة بالخصائص Program.cs والأساليب التالية:

    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 subscription
    ServiceBusProcessor processor;    
    
    // handle received messages
    async Task MessageHandler(ProcessMessageEventArgs args)
    {
        string body = args.Message.Body.ToString();
        Console.WriteLine($"Received: {body} from subscription.");
    
        // complete the message. messages is deleted from the subscription. 
        await args.CompleteMessageAsync(args.Message);
    }
    
    // handle any errors when receiving messages
    Task ErrorHandler(ProcessErrorEventArgs args)
    {
        Console.WriteLine(args.Exception.ToString());
        return Task.CompletedTask;
    }
    
  2. إلحاق التعليمات البرمجية التالية بنهاية Program.cs.

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

    هام

    تحديث قيم العنصر النائب (<NAMESPACE-NAME>، ، <TOPIC-NAME>، <SUBSCRIPTION-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.
    //
    // Create the clients that we'll use for sending and processing messages.
    // TODO: Replace the <NAMESPACE-NAME> placeholder
    client = new ServiceBusClient(
        "<NAMESPACE-NAME>.servicebus.windows.net",
        new DefaultAzureCredential());
    
    // create a processor that we can use to process the messages
    // TODO: Replace the <TOPIC-NAME> and <SUBSCRIPTION-NAME> placeholders
    processor = client.CreateProcessor("<TOPIC-NAME>", "<SUBSCRIPTION-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();
    }
    
  3. إليك ما Program.cs ينبغي أن تبدو عليه:

    using System;
    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 subscription
    ServiceBusProcessor processor;
    
    // handle received messages
    async Task MessageHandler(ProcessMessageEventArgs args)
    {
        string body = args.Message.Body.ToString();
        Console.WriteLine($"Received: {body} from subscription.");
    
        // complete the message. messages is deleted from the subscription. 
        await args.CompleteMessageAsync(args.Message);
    }
    
    // handle any errors when receiving messages
    Task ErrorHandler(ProcessErrorEventArgs args)
    {
        Console.WriteLine(args.Exception.ToString());
        return Task.CompletedTask;
    }
    
    // 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.
    //
    // Create the clients that we'll use for sending and processing messages.
    // TODO: Replace the <NAMESPACE-NAME> placeholder
    client = new ServiceBusClient(
        "<NAMESPACE-NAME>.servicebus.windows.net",
        new DefaultAzureCredential());
    
    // create a processor that we can use to process the messages
    // TODO: Replace the <TOPIC-NAME> and <SUBSCRIPTION-NAME> placeholders
    processor = client.CreateProcessor("<TOPIC-NAME>", "<SUBSCRIPTION-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. أنشئ المشروع، وتأكد من عدم وجود أخطاء.

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

    Wait for a minute and then press any key to end the processing
    Received: Message 1 from subscription: S1
    Received: Message 2 from subscription: S1
    Received: Message 3 from subscription: S1
    
    Stopping the receiver...
    Stopped receiving messages
    
  6. قم بالتحقق من المدخل مرة أخرى.

    • في الصفحة Service Bus Topic، في المخطط Messages، تلاحظ ثلاث رسائل واردة وثلاث رسائل صادرة. إذا لم تلاحظ هذه الأرقام، فانتظر لبضع دقائق، ثم قم بتحديث الصفحة لرؤية المخطط المحدث.

      Messages sent and received

    • في الصفحة Service Bus Subscription، تلاحظ Active message count كصفر. وذلك لأن جهاز الاستقبال قد تلقى رسائل من هذا الاشتراك وأكمل الرسائل.

      Active message count at the subscription at the end

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

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