التشغيل السريع: إرسال واستقبال الرسائل من قائمة انتظار ناقل خدمة Azure (.NET)
في هذه البداية السريعة، ستقوم بالخطوات التالية:
إنشاء مساحة اسم Service Bus باستخدام المدخل Azure.
إنشاء قائمة انتظار Service Bus باستخدام المدخل Azure.
اكتب تطبيق وحدة تحكم .NET لإرسال مجموعة من الرسائل إلى قائمة الانتظار.
اكتب تطبيق وحدة تحكم .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 (قوائم الانتظار والموضوعات وما إلى ذلك) داخل التطبيق الخاص بك.
لإنشاء مساحة اسم:
قم بتسجيل الدخول إلى بوابة Azure.
انتقل إلى صفحة جميع الخدمات.
في شريط التنقل الأيسر، حدد Integration من قائمة الفئات، وقم بتمرير الماوس فوق ناقل خدمة Microsoft Azure، ثم حدد + الزر على لوحة Service Bus.
في علامة التبويب "Basics" في صفحة "Create namespace" اتبع الخطوات الآتية:
بالنسبة إلى Subscription، اختر اشتراك Azure لإنشاء مساحة الاسم.
بالنسبة إلى "Resource group"، اختر مجموعة موارد موجودة حيث توجد مساحة الاسم، أو قم بإنشاء مجموعة موارد جديدة.
أدخل name لمساحة الاسم. يجب أن يلتزم اسم مساحة الاسم باصطلاحات التسمية التالية:
- يجب أن يكون الاسم فريدًا عبر Azure. يتحقق النظام على الفور لمعرفة ما إذا كان الاسم متوفرًا.
- ألا يقل طول الاسم عن 6 أحرف ولا يزيد عن 50 حرفاً.
- لا يمكن أن يحتوي الاسم إلا على أحرف وأرقام وواصلات "-".
- يجب أن يبدأ الاسم وينتهي بحرف أو رقم.
- ألا ينتهي الاسم بـ "-sb" أو "-mgmt".
بالنسبة إلى "Location"، اختر المنطقة التي ينبغي استضافة مساحة الاسم فيها.
بالنسبة إلى "Pricing tier"، حدد مستوى التسعير (Basic أو Standard أو Premium) لمساحة الاسم. بالنسبة لهذا التشغيل السريع، حدد Standard.
هام
وإذا كنت ترغب في استخدام الموضوعات والاشتراكات، فاختر إما "Standard" أو "Premium". فإن الموضوعات/الاشتراكات غير مدعومة في مستوى التسعير الأساسي.
وإذا حددت مستوى التسعير "Premium"، فحدد عدد وحدات المراسلة. ويوفر المستوى المميز عزل الموارد على مستوى وحدة المعالجة المركزية والذاكرة بحيث يتم تشغيل كل حمل عمل على حدة. تسمى حاوية المورد هذه وحدة المراسلة. وتحتوي مساحة الاسم المميزة على وحدة مراسلة واحدة على الأقل. ويمكنك تحديد وحدات المراسلة 1 أو 2 أو 4 أو 8 أو 16 لكل مساحة اسم مميزة لناقل خدمة Azure. ولمزيد من المعلومات، راجع المراسلة المميزة لناقل خدمة Microsoft Azure.
حدد مراجعة + إنشاء عند أسفل الصفحة.
في صفحة "Review + create"، راجع الإعدادات ثم حدد "Create".
بمجرد نجاح نشر المورد، حدد Go to resource في صفحة التوزيع.
راجع الصفحة الرئيسية لمساحة اسم ناقل الخدمة.
إنشاء قائمة الانتظار في مدخل Azure
في الصفحة Service Bus Namespace، حدد قوائم الانتظار في قائمة التنقل اليمنى.
في صفحة قوائم الانتظار، حدد + قائمة انتظار في شريط الأدوات.
أدخل اسمًا لقائمة الانتظار، واترك القيم الأخرى بإعداداتها الافتراضية.
الآن، حدد إنشاء.
هام
إذا كنت مستخدما جديدا ل 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 دقيقة أو دقيقتين. في حالات نادرة، قد يستغرق الأمر ما يصل إلى ثماني دقائق. إذا تلقيت أخطاء المصادقة عند تشغيل التعليمات البرمجية لأول مرة، فانتظر بضع لحظات وحاول مرة أخرى.
إذا لم تكن صفحة مساحة اسم ناقل خدمة Microsoft Azure مفتوحة في مدخل Microsoft Azure، فحدد موقع مساحة اسم ناقل الخدمة باستخدام شريط البحث الرئيسي أو التنقل الأيسر.
في صفحة النظرة العامة، حدد Access control (IAM) من القائمة اليسرى.
حدد صفحة التحكم بالوصول (IAM)، وحدد علامة تبويب تعيينات الدور.
حدد + إضافة من القائمة العلوية ثم إضافة تعيين الدور من القائمة المنسدلة الناتجة.
استخدم مربع البحث لتصفية النتائج إلى الدور المطلوب. في هذا المثال، ابحث
Azure Service Bus Data Owner
عن النتيجة المطابقة وحددها. ثم اختر التالي.ضمن تعيين الوصول إلى، حدد المستخدم أو المجموعة أو كيان الخدمة، ثم اختر + تحديد الأعضاء.
في مربع الحوار، ابحث عن اسم مستخدم Microsoft Entra (عنوان بريدك الإلكتروني user@domain عادة) ثم اختر تحديد في أسفل مربع الحوار.
حدد مراجعة + تعيين للانتقال إلى الصفحة النهائية، ثم مراجعة + تعيين مرة أخرى لإكمال العملية.
تشغيل Visual Studio وتسجيل الدخول إلى Azure
يمكنك تخويل الوصول إلى مساحة اسم ناقل الخدمة باستخدام الخطوات التالية:
قم بتشغيل Visual Studio. إذا رأيت نافذة بدء الاستخدام ، فحدد الارتباط متابعة بدون تعليمات برمجية في الجزء الأيمن.
حدد زر تسجيل الدخول في الجزء العلوي الأيمن من Visual Studio.
تسجيل الدخول باستخدام حساب Microsoft Entra الذي قمت بتعيين دور له مسبقا.
إرسال رسائل إلى قائمة الانتظار
يوضح لك هذا القسم كيفية إنشاء تطبيق وحدة تحكم .NET لإرسال رسائل إلى قائمة انتظار ناقل خدمة Microsoft Azure.
إشعار
توفر هذه البداية السريعة إرشادات تفصيلية لسيناريو بسيط لإرسال مجموعة من الرسائل إلى قائمة انتظار ناقل خدمة Azure وتلقيها منها. لمزيد من العينات حول السيناريوهات الأخرى والمتقدمة، راجع عينات .NET الخاصة بناقل الخدمة على GitHub.
قم بإنشاء تطبيق وحدة تحكم
في Visual Studio، حدد File ->New ->Project menu.
في مربع حوار إنشاء مشروع جديد، نفِّذ الخطوات التالية: في حال عدم رؤية مربع الحوار هذا، حدد ملف من القائمة، وحدد جديد، ثم حدد مشروع.
قم بتحديد C# للغة البرمجة.
قم بتحديد Console لنوع التطبيق.
حدد Console App من قائمة النتائج.
ثم حدد التالي.
قم بإدخال QueueSender لاسم المشروع، ServiceBusQueue البدء السريع لاسم الحل، ثم حدد Next.
في الصفحة Additional information، حدد Create لإنشاء الحل والمشروع.
إضافة حزم NuGet إلى المشروع
حدد Tools>NuGet Package Manager>Package Manager Console من القائمة.
قم بتشغيل الأمر التالي لتثبيت حزمة Azure.Messaging.ServiceBus NuGet.
Install-Package Azure.Messaging.ServiceBus
قم بتشغيل الأمر التالي لتثبيت حزمة Azure.Identity NuGet.
Install-Package Azure.Identity
إضافة تعليمات برمجية لإرسال رسائل إلى قائمة الانتظار
استبدل محتويات
Program.cs
بالتعليمة البرمجية التالية. يتم توضيح الخطوات المهمة في القسم التالي، مع معلومات إضافية في تعليقات التعليمات البرمجية.- إنشاء كائن ServiceBusClient باستخدام
DefaultAzureCredential
الكائن .DefaultAzureCredential
يكتشف تلقائيا بيانات اعتماد تسجيل الدخول إلى Visual Studio ويستخدمها للمصادقة على ناقل خدمة Azure. - استدعاء طريقة CreateSender على كائن ServiceBusClient لإنشاء كائن ServiceBusSender لقائمة انتظار "ناقل الخدمة" معينة.
- إنشاء كائن ServiceBusMessageBatch باستخدام ServiceBusSender.CreateMessageBatchAsync.
- إضافة رسائل إلى المجموعة باستخدام ServiceBusMessageBatch.TryAddMessage.
- إرسال مجموعة من الرسائل إلى موضوع Service Bus باستخدام الأسلوب ServiceBusSender.SendMessagesAsync.
هام
تحديث قيم العنصر النائب (
<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();
- إنشاء كائن ServiceBusClient باستخدام
أنشئ المشروع، وتأكد من عدم وجود أخطاء.
شغِّل البرنامج وانتظر رسالة التأكيد.
A batch of 3 messages has been published to the queue
هام
في معظم الحالات، سيستغرق نشر تعيين الدور في Azure دقيقة أو دقيقتين. في حالات نادرة، قد يستغرق الأمر ما يصل إلى ثماني دقائق. إذا تلقيت أخطاء المصادقة عند تشغيل التعليمات البرمجية لأول مرة، فانتظر بضع لحظات وحاول مرة أخرى.
في المدخل Azure، اتبع الخطوات التالية:
انتقل إلى مساحة اسم Service Bus.
في الصفحة نظرة عامة، حدد قائمة الانتظار في الجزء السفلي الأوسط.
قم بملاحظة القيم في قسم أساسيات.
تحديث القيم التالية:
- قيمة عدد الرسائل النشطة لقائمة الانتظار الآن 3. في كل مرة تقوم فيها بتشغيل تطبيق المرسل هذا دون استرداد الرسائل، تزداد هذه القيمة بمقدار 3.
- يتزايد الحجم الحالي لقائمة الانتظار في كل مرة يضيف فيها التطبيق رسائل إلى قائمة الانتظار.
- في مخطط الرسائل في قسم المقاييس السفلي، يمكنك مشاهدة وجود ثلاث رسائل واردة لقائمة الانتظار.
تلقي الرسائل من قائمة الانتظار
في هذا القسم، يمكنك إنشاء تطبيق وحدة تحكم .NET الذي يتلقى رسائل من قائمة الانتظار.
إشعار
يوفر هذا التشغيل السريع إرشادات خطوة بخطوة لتنفيذ سيناريو إرسال دفعة من الرسائل إلى قائمة انتظار ناقل خدمة Microsoft Azure ثم تلقيها. لمزيد من العينات حول السيناريوهات الأخرى والمتقدمة، راجع عينات .NET الخاصة بناقل الخدمة على GitHub.
إنشاء مشروع لجهاز الاستقبال
- في النافذة Solution Explorer، انقر بزر الماوس الأيمن فوق الحل ServiceBusQueueQuickStart، ثم أشر إلى Add، وحدد New Project.
- قم بتحديد Console application ثم حدد Next.
- أدخل QueueReceiver لخانة Project name وحدد Create.
- في نافذة مستكشف الحلول، انقر بزر الماوس الأيمن فوق QueueReceiver، وحدد Set as a Startup Project.
إضافة حزم NuGet إلى المشروع
حدد Tools>NuGet Package Manager>Package Manager Console من القائمة.
حدد QueueReceiver للمشروع الافتراضي.
قم بتشغيل الأمر التالي لتثبيت حزمة Azure.Messaging.ServiceBus NuGet.
Install-Package Azure.Messaging.ServiceBus
قم بتشغيل الأمر التالي لتثبيت حزمة Azure.Identity NuGet.
Install-Package Azure.Identity
إضافة التعليمات البرمجية لتلقي الرسائل من قائمة الانتظار
في هذا القسم، يمكنك إضافة تعليمة برمجية لاسترداد الرسائل من قائمة الانتظار.
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;
إلحاق الأساليب التالية بنهاية
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; }
إلحاق التعليمات البرمجية التالية بنهاية
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(); }
- إنشاء كائن ServiceBusClient باستخدام
يجب أن تتطابق الفئة المكتملة
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; }
أنشئ المشروع، وتأكد من عدم وجود أخطاء.
استخدم تطبيق المستلم. يجب أن تشاهد الرسائل المستلمة. قم بالضغط على أي مفتاح لإيقاف جهاز الاستقبال والتطبيق.
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
قم بالتحقق من المدخل مرة أخرى. يجب عليك الانتظار لبضع دقائق ثم قم بتحديث الصفحة إذا لم تشاهد
0
الرسائل النشطة.
تنظيف الموارد
انتقل إلى مساحة اسم ناقل خدمة Microsoft Azure في مدخل Microsoft Azure، وحدد Delete على مدخل Microsoft Azure لحذف مساحة الاسم وقائمة الانتظار فيها.
(راجع أيضًا )
راجع الوثائق والعينات التالية:
- مكتبة عميل Azure Service Bus لـ .NET - Readme
- عينات على GitHub
- مرجع واجهة برمجة تطبيقات .NET
- تجريد مخاوف البنية الأساسية مع أطر عمل عالية المستوى مثل NServiceBus