التشغيل السريع: إرسال الأحداث إلى مراكز الأحداث واستقبالها من Azure Event Hubs باستخدام .NET
في هذا التشغيل السريع، ستتعلم كيفية إرسال الأحداث إلى مركز أحداث ثم تلقي هذه الأحداث من مركز الأحداث باستخدام مكتبة Azure.Messaging.EventHubs .NET.
إشعار
قوالب التشغيل السريع مخصصة لك لزيادة الخدمة بسرعة. إذا كنت على دراية بالخدمة بالفعل، فقد ترغب في رؤية نماذج .NET لمراكز الأحداث في مستودع .NET SDK على GitHub: عينات مراكز الأحداث على GitHub، عينات معالج الأحداث على GitHub.
المتطلبات الأساسية
إذا كنت جديدا على Azure Event Hubs، فشاهد نظرة عامة على مراكز الأحداث قبل الانتقال من خلال هذا التشغيل السريع.
تحتاج إلى المتطلبات الأساسية التالية لإكمال هذا التشغيل السريع:
- الاشتراك في Microsoft Azure. تحتاج إلى اشتراك لاستخدام خدمات Azure، بما في ذلك مراكز الأحداث في Azure. إذا لم يكن حساب Azure متوفرًا لديك، يمكنك التسجيل للحصول على نسخة تجريبية مجانية، أو استخدام مزايا الاشتراك في MSDN عند إنشاء حساب.
- Microsoft Visual Studio 2022. تستفيد مكتبة عملاء مراكز الأحداث في Azure من الميزات الجديدة المتوفرة في إصدار C# 8.0. لا يزال بإمكانك استخدام المكتبة مع إصدارات لغة C# السابقة، ولكن بناء الجملة الجديد غير متوفر. للاستفادة من بناء الجملة الكامل، من المستحسن التحويل البرمجي إلى الإصدار 3.0 أو الأعلى من .NET Core SDK وتعيين إصدار اللغة إلى
latest
. إذا كنت تستخدم Visual Studio، فإن الإصدارات قبل Visual Studio 2022 غير متوافقة مع الأدوات اللازمة لإنشاء مشاريع C# 8.0. يمكن تنزيل Visual Studio 2022، بما في ذلك إصدار Community المجاني، هنا. - أنشئ مساحة اسم لـ Event Hubs ومركز الأحداث. الخطوة الأولى هي استخدام مدخل Microsoft Azure لإنشاء مساحة اسم مراكز الأحداث ومركز أحداث في مساحة الاسم. بعد ذلك، احصل على بيانات اعتماد الإدارة التي يحتاجها تطبيقك للاتصال بمركز الحدث. لإنشاء مساحة اسم ومركز أحداث، راجع التشغيل السريع: إنشاء مركز أحداث باستخدام مدخل Microsoft Azure.
مصادقة التطبيق إلى Azure
يوضح لك هذا البدء السريع طريقتين للاتصال بمراكز أحداث Azure:
- بدون كلمة مرور (مصادقة Microsoft Entra)
- سلسلة الاتصال
يوضح لك الخيار الأول كيفية استخدام أساس الأمان في Azure Active Directory والتحكم في الوصول المستند إلى الدور (RBAC) للاتصال بمساحة اسم مراكز الأحداث. لا داعي للقلق بشأن وجود سلسلة الاتصال ذات تعليمات برمجية مضمنة في التعليمات البرمجية الخاصة بك أو في ملف تكوين أو في تخزين آمن مثل Azure Key Vault.
يوضح لك الخيار الثاني كيفية استخدام سلسلة الاتصال للاتصال بمساحة اسم مراكز الأحداث. إذا كنت جديدا على Azure، فقد تجد خيار سلسلة الاتصال أسهل في المتابعة. نوصي باستخدام الخيار بدون كلمة مرور في التطبيقات وبيئات الإنتاج في العالم الحقيقي. لمزيد من المعلومات، راجع المصادقة والتخويل. يمكنك أيضا قراءة المزيد حول المصادقة بدون كلمة مرور في صفحة النظرة العامة.
تعيين أدوار لمستخدم Microsoft Entra
عند التطوير محليا، تأكد من أن حساب المستخدم الذي يتصل ب Azure Event Hubs لديه الأذونات الصحيحة. ستحتاج إلى دور مالك بيانات مراكز الأحداث من أجل إرسال الرسائل وتلقيها. لتعيين هذا الدور لنفسك، ستحتاج إلى دور المستخدم Access مسؤول istrator أو دور آخر يتضمن Microsoft.Authorization/roleAssignments/write
الإجراء. يمكنك تعيين أدوار Azure RBAC لمستخدم باستخدام مدخل Microsoft Azure أو Azure CLI أو Azure PowerShell. تعرف على المزيد حول النطاقات المتوفرة لتعيينات الأدوار في صفحة نظرة عامة على النطاق.
يعين Azure Event Hubs Data Owner
المثال التالي الدور إلى حساب المستخدم الخاص بك، والذي يوفر الوصول الكامل إلى موارد مراكز الأحداث Azure. في سيناريو حقيقي، اتبع مبدأ الامتياز الأقل لمنح المستخدمين الحد الأدنى فقط من الأذونات اللازمة لبيئة إنتاج أكثر أمانا.
أدوار Azure مضمنة لمراكز أحداث Azure
بالنسبة لمراكز أحداث Azure، فإن إدارة مساحات الأسماء وجميع الموارد ذات الصلة من خلال مدخل Microsoft Azure وواجهة برمجة تطبيقات إدارة موارد Azure محمية بالفعل باستخدام نموذج Azure RBAC. يوفر Azure الأدوار المضمنة أدناه ل Azure لتخويل الوصول إلى مساحة اسم مراكز الأحداث:
- مالك بيانات مراكز الأحداث: تمكين الوصول إلى البيانات إلى مساحة اسم مراكز الأحداث وكياناتها (قوائم الانتظار والموضوعات والاشتراكات وعوامل التصفية)
- مرسل بيانات Azure Event Hubs: استخدم هذا الدور لمنح المرسل حق الوصول إلى مساحة اسم مراكز الأحداث وكياناتها.
- Azure Event Hubs Data Receiver: استخدم هذا الدور لمنح المتلقي حق الوصول إلى مساحة اسم مراكز الأحداث وكياناتها.
إذا كنت ترغب في إنشاء دور مخصص، فشاهد الحقوق المطلوبة لعمليات مراكز الأحداث.
هام
في معظم الحالات، سيستغرق نشر تعيين الدور في Azure دقيقة أو دقيقتين. في حالات نادرة، قد يستغرق الأمر ما يصل إلى ثماني دقائق. إذا تلقيت أخطاء المصادقة عند تشغيل التعليمات البرمجية لأول مرة، فانتظر بضع لحظات وحاول مرة أخرى.
في مدخل Microsoft Azure، حدد موقع مساحة اسم Event Hubs باستخدام شريط البحث الرئيسي أو التنقل الأيسر.
في صفحة النظرة العامة، حدد Access control (IAM) من القائمة اليسرى.
حدد صفحة التحكم بالوصول (IAM)، وحدد علامة تبويب تعيينات الدور.
حدد + إضافة من القائمة العلوية ثم إضافة تعيين الدور من القائمة المنسدلة الناتجة.
استخدم مربع البحث لتصفية النتائج إلى الدور المطلوب. في هذا المثال، ابحث
Azure Event Hubs Data Owner
عن النتيجة المطابقة وحددها. ثم اختر التالي.ضمن تعيين الوصول إلى، حدد المستخدم أو المجموعة أو كيان الخدمة، ثم اختر + تحديد الأعضاء.
في مربع الحوار، ابحث عن اسم مستخدم Microsoft Entra (عنوان بريدك الإلكتروني user@domain عادة) ثم اختر تحديد في أسفل مربع الحوار.
حدد مراجعة + تعيين للانتقال إلى الصفحة النهائية، ثم مراجعة + تعيين مرة أخرى لإكمال العملية.
تشغيل Visual Studio وتسجيل الدخول إلى Azure
يمكنك تخويل الوصول إلى مساحة اسم ناقل الخدمة باستخدام الخطوات التالية:
قم بتشغيل Visual Studio. إذا رأيت نافذة بدء الاستخدام ، فحدد الارتباط متابعة بدون تعليمات برمجية في الجزء الأيمن.
حدد زر تسجيل الدخول في الجزء العلوي الأيمن من Visual Studio.
تسجيل الدخول باستخدام حساب Microsoft Entra الذي قمت بتعيين دور له مسبقا.
إرسال الأحداث إلى مركز الأحداث
يوضح لك هذا القسم كيفية إنشاء تطبيق وحدة تحكم .NET Core لإرسال الأحداث إلى مركز الأحداث الذي أنشأته.
قم بإنشاء تطبيق وحدة تحكم
إذا كان Visual Studio 2022 مفتوحا بالفعل، فحدد ملف في القائمة، وحدد جديد، ثم حدد Project. وإلا، قم بتشغيل Visual Studio 2022 وحدد إنشاء مشروع جديد إذا رأيت نافذة منبثقة.
في مربع حوار إنشاء مشروع جديد، نفِّذ الخطوات التالية: في حال عدم رؤية مربع الحوار هذا، حدد ملف من القائمة، وحدد جديد، ثم حدد مشروع.
قم بتحديد C# للغة البرمجة.
قم بتحديد Console لنوع التطبيق.
قم بتحديد Console Application من قائمة النتائج.
ثم حدد التالي.
أدخل EventHubsSender لاسم المشروع، EventHubsQuickStart لاسم الحل، ثم حدد التالي.
في الصفحة Additional information، حدد Create.
إضافة حزم NuGet إلى المشروع
حدد Tools>NuGet Package Manager>Package Manager Console من القائمة.
قم بتشغيل الأوامر التالية لتثبيت حزم Azure.Messaging.EventHubs وAzure.Identity NuGet. اضغط على ENTER لتشغيل الأمر الثاني.
Install-Package Azure.Messaging.EventHubs Install-Package Azure.Identity
كتابة التعليمات البرمجية لإرسال أحداث إلى مركز الأحداث
استبدل التعليمات البرمجية الموجودة في
Program.cs
الملف بنموذج التعليمات البرمجية التالي. بعد ذلك، استبدل<EVENT_HUB_NAMESPACE>
<HUB_NAME>
قيمEventHubProducerClient
العناصر النائبة للمعلمات وأسماء مساحة اسم Event Hubs ومركز الأحداث. على سبيل المثال،"spehubns0309.servicebus.windows.net"
و"spehub"
.فيما يلي الخطوات الهامة من التعليمات البرمجية:
- إنشاء كائن EventHubProducerClient باستخدام مساحة الاسم واسم مركز الحدث.
- استدعاء الأسلوب CreateBatchAsync على كائن EventHubProducerClient لإنشاء كائن EventDataBatch.
- أضف الأحداث إلى الدفعة باستخدام طريقة EventDataBatch.TryAdd.
- يرسل مجموعة الرسائل إلى مركز الحدث باستخدام الأسلوب EventHubProducerClient.SendAsync.
using Azure.Identity; using Azure.Messaging.EventHubs; using Azure.Messaging.EventHubs.Producer; using System.Text; // number of events to be sent to the event hub int numOfEvents = 3; // The Event Hubs client types are safe to cache and use as a singleton for the lifetime // of the application, which is best practice when events are being published or read regularly. // TODO: Replace the <EVENT_HUB_NAMESPACE> and <HUB_NAME> placeholder values EventHubProducerClient producerClient = new EventHubProducerClient( "<EVENT_HUB_NAMESPACE>.servicebus.windows.net", "<HUB_NAME>", new DefaultAzureCredential()); // Create a batch of events using EventDataBatch eventBatch = await producerClient.CreateBatchAsync(); for (int i = 1; i <= numOfEvents; i++) { if (!eventBatch.TryAdd(new EventData(Encoding.UTF8.GetBytes($"Event {i}")))) { // if it is too large for the batch throw new Exception($"Event {i} is too large for the batch and cannot be sent."); } } try { // Use the producer client to send the batch of events to the event hub await producerClient.SendAsync(eventBatch); Console.WriteLine($"A batch of {numOfEvents} events has been published."); Console.ReadLine(); } finally { await producerClient.DisposeAsync(); }
أنشئ المشروع، وتأكد من عدم وجود أخطاء.
شغِّل البرنامج وانتظر رسالة التأكيد.
A batch of 3 events has been published.
هام
إذا كنت تستخدم مصادقة Passwordless (التحكم في الوصول المستند إلى الدور في Azure Active Directory)، فحدد Tools، ثم حدد Options. في نافذة Options ، قم بتوسيع Azure Service Authentication، وحدد Account Selection. تأكد من أنك تستخدم الحساب الذي تمت إضافته إلى دور مالك بيانات مراكز الأحداث في مساحة اسم مراكز الأحداث.
في صفحة Event Hubs Namespace في مدخل Microsoft Azure، سترى ثلاث رسائل واردة في مخطط الرسائل . قم بتحديث الصفحة لتحديث المخطط إذا لزم الأمر. قد يستغرق إظهار تلقي الرسائل بضع ثوانٍ.
إشعار
للحصول على التعليمات البرمجية للمصدر الكامل والمزيد من التعليقات المعلوماتية، راجع هذا الملف على GitHub
تلقي الأحداث من مركز الأحداث
يوضح هذا القسم كيفية كتابة تطبيق وحدة تحكم .NET Core الذي يتلقى الأحداث من أحد مراكز الأحداث باستخدام معالج أحداث. يعمل معالج الأحداث على تبسيط تلقي الأحداث من مراكز الأحداث.
إنشاء حساب تخزين Azure وحاوية كائن ثنائي كبير الحجم
يمكنك في هذا التشغيل السريع استخدام Azure Storage كمخزن نقطة تحقق. اتبع هذه الخطوات لإنشاء حساب Azure Storage.
- أنشئ حساب Azure Storage
- إنشاء حاوية كائن ثنائي كبير الحجم
- المصادقة على حاوية الكائن الثنائي كبير الحجم باستخدام مصادقة معرف Microsoft Entra (بدون كلمة مرور) أو سلسلة الاتصال إلى مساحة الاسم.
اتبع هذه التوصيات عند استخدام Azure Blob Storage كمخزن نقطة تحقق:
- استخدم حاوية منفصلة لكل مجموعة مستهلكين. يمكنك استخدام نفس حساب التخزين، ولكن استخدام حاوية واحدة لكل مجموعة.
- لا تستخدم الحاوية لأي شيء آخر، ولا تستخدم حساب التخزين لأي شيء آخر.
- يجب أن يكون حساب التخزين في نفس المنطقة التي يوجد فيها التطبيق المنشور. إذا كان التطبيق محليا، فحاول اختيار أقرب منطقة ممكنة.
في صفحة Storage account في مدخل Microsoft Azure، في قسم Blob service ، تأكد من تعطيل الإعدادات التالية.
- مساحة الاسم الهرمية
- حذف مبدئي لكائن ثنائي كبير الحجم
- تعيين الإصدار
عند التطوير محليًا، تأكد من أن حساب المستخدم الذي يصل إلى بيانات الكائن الثنائي كبير الحجم لديه الأذونات الصحيحة. ستحتاج إلى Storage Blob Data Contributor لقراءة بيانات الكائن الثنائي كبير الحجم وكتابتها. لتعيين هذا الدور لنفسك، ستحتاج إلى تعيين دور المستخدم Access مسؤول istrator، أو دور آخر يتضمن إجراء Microsoft.Authorization/roleAssignments/write. يمكنك تعيين أدوار Azure RBAC لمستخدم باستخدام مدخل Microsoft Azure أو Azure CLI أو Azure PowerShell. يمكنك معرفة المزيد حول النطاقات المتوفرة لتعيينات الأدوار في صفحة نظرة عامة على النطاق.
في هذا السيناريو، ستقوم بتعيين أذونات لحساب المستخدم الخاص بك، محددة النطاق إلى حساب التخزين، لاتباع مبدأ أقل الامتيازات. تمنح هذه الممارسة المستخدمين الحد الأدنى من الأذونات المطلوبة فقط وتنشئ بيئات تشغيل أكثر أمانًا.
سيقوم المثال التالي بتعيين دور Storage Blob Data Contributor إلى حساب المستخدم الخاص بك، والذي يوفر حق الوصول للقراءة والكتابة إلى بيانات blob في حساب التخزين الخاص بك.
هام
في معظم الحالات، سيستغرق نشر تعيين الدور في Azure دقيقة أو دقيقتين، ولكن في حالات نادرة قد يستغرق الأمر ما يصل إلى ثماني دقائق. إذا تلقيت أخطاء المصادقة عند تشغيل التعليمات البرمجية لأول مرة، فانتظر بضع لحظات وحاول مرة أخرى.
في مدخل Microsoft Azure، حدد موقع حساب التخزين الخاص بك باستخدام شريط البحث الرئيسي أو شريط التنقل الأيسر.
في صفحة نظرة عامة على حساب التخزين، حدد التحكم بالوصول (IAM) من القائمة اليسرى.
حدد صفحة التحكم بالوصول (IAM)، وحدد علامة تبويب تعيينات الدور.
حدد + إضافة من القائمة العلوية ثم إضافة تعيين الدور من القائمة المنسدلة الناتجة.
استخدم مربع البحث لتصفية النتائج إلى الدور المطلوب. في هذا المثال، ابحث عن مساهم بيانات Storage Blob وحدد النتيجة المطابقة ثم اختر التالي.
ضمن تعيين الوصول إلى، حدد المستخدم أو المجموعة أو كيان الخدمة، ثم اختر + تحديد الأعضاء.
في مربع الحوار، ابحث عن اسم مستخدم Microsoft Entra (عنوان بريدك الإلكتروني user@domain عادة) ثم اختر تحديد في أسفل مربع الحوار.
حدد مراجعة + تعيين للانتقال إلى الصفحة النهائية، ثم مراجعة + تعيين مرة أخرى لإكمال العملية.
إنشاء مشروع لجهاز الاستقبال
- في نافذة مستكشف الحلول، انقر بزر الماوس الأيمن فوق حل EventHubQuickStart، ثم أشر إلى Add، وحدد New Project.
- قم بتحديد Console application ثم حدد Next.
- أدخل EventHubsReceiver لخانة Project name وحدد Create.
- في نافذة مستكشف الحلول، انقر بزر الماوس الأيمن فوق EventHubsReceiver، وحدد Set as a Startup Project.
إضافة حزم NuGet إلى المشروع
حدد Tools>NuGet Package Manager>Package Manager Console من القائمة.
في نافذة Package Manager Console، تأكد من تحديد EventHubsReceiver للمشروع الافتراضي. وفي حال عدم التحديد، استخدم القائمة المنسدلة لتحديد EventHubsReceiver.
قم بتشغيل الأمر التالي لتثبيت حزم Azure.Messaging.EventHubs وحزم NuGet Azure.Identity . اضغط على ENTER لتشغيل الأمر الأخير.
Install-Package Azure.Messaging.EventHubs Install-Package Azure.Messaging.EventHubs.Processor Install-Package Azure.Identity
حدث الكود
استبدال محتويات Program.cs بالتعليمة البرمجية التالية:
استبدل التعليمات البرمجية الموجودة في
Program.cs
الملف بنموذج التعليمات البرمجية التالي. بعد ذلك، استبدل قيم العنصر<STORAGE_ACCOUNT_NAME>
النائب و<BLOB_CONTAINER_NAME>
لBlobContainerClient
URI. استبدل قيم العنصر<EVENT_HUB_NAMESPACE>
النائب و<HUB_NAME>
لEventProcessorClient
أيضا.فيما يلي الخطوات الهامة من التعليمات البرمجية:
- إنشاء كائن EventProcessorClient باستخدام مساحة اسم مراكز الأحداث واسم مركز الحدث. تحتاج إلى إنشاء عنصر BlobContainerClient للحاوية في تخزين Azure الذي أنشأته سابقاً.
- تحدد معالجات لأحداث ProcessEventAsync وProcessErrorAsync لعنصر EventProcessorClient.
- يبدأ معالجة الأحداث عن طريق استدعاء StartProcessingAsync في عنصر EventProcessorClient.
- إيقاف معالجة الأحداث بعد 30 ثانية عن طريق استدعاء StopProcessingAsync على كائن EventProcessorClient .
using Azure.Identity; using Azure.Messaging.EventHubs; using Azure.Messaging.EventHubs.Consumer; using Azure.Messaging.EventHubs.Processor; using Azure.Storage.Blobs; using System.Text; // Create a blob container client that the event processor will use // TODO: Replace <STORAGE_ACCOUNT_NAME> and <BLOB_CONTATINAER_NAME> with actual names BlobContainerClient storageClient = new BlobContainerClient( new Uri("https://<STORAGE_ACCOUNT_NAME>.blob.core.windows.net/<BLOB_CONTAINER_NAME>"), new DefaultAzureCredential()); // Create an event processor client to process events in the event hub // TODO: Replace the <EVENT_HUBS_NAMESPACE> and <HUB_NAME> placeholder values var processor = new EventProcessorClient( storageClient, EventHubConsumerClient.DefaultConsumerGroupName, "<EVENT_HUB_NAMESPACE>.servicebus.windows.net", "<HUB_NAME>", new DefaultAzureCredential()); // Register handlers for processing events and handling errors processor.ProcessEventAsync += ProcessEventHandler; processor.ProcessErrorAsync += ProcessErrorHandler; // Start the processing await processor.StartProcessingAsync(); // Wait for 30 seconds for the events to be processed await Task.Delay(TimeSpan.FromSeconds(30)); // Stop the processing await processor.StopProcessingAsync(); Task ProcessEventHandler(ProcessEventArgs eventArgs) { // Write the body of the event to the console window Console.WriteLine("\tReceived event: {0}", Encoding.UTF8.GetString(eventArgs.Data.Body.ToArray())); Console.ReadLine(); return Task.CompletedTask; } Task ProcessErrorHandler(ProcessErrorEventArgs eventArgs) { // Write details about the error to the console window Console.WriteLine($"\tPartition '{eventArgs.PartitionId}': an unhandled exception was encountered. This was not expected to happen."); Console.WriteLine(eventArgs.Exception.Message); Console.ReadLine(); return Task.CompletedTask; }
أنشئ المشروع، وتأكد من عدم وجود أخطاء.
إشعار
للحصول على التعليمات البرمجية للمصدر الكامل والمزيد من التعليقات المعلوماتية، راجع هذا الملف على GitHub.
استخدم تطبيق المستلم.
وسيمكنك رؤية رسالة تلقي الأحداث. اضغط على ENTER بعد رؤية رسالة حدث تم تلقيها.
Received event: Event 1 Received event: Event 2 Received event: Event 3
وتلك الأحداث هي الأحداث الثلاثة التي أرسلتها إلى مركز الأحداث في وقت سابق عن طريق استخدام برنامج المرسل.
في مدخل Microsoft Azure، يمكنك التحقق من وجود ثلاث رسائل صادرة، والتي أرسلتها مراكز الأحداث إلى التطبيق المتلقي. أعد تنشيط الصفحة لتحديث المخطط. قد يستغرق إظهار تلقي الرسائل بضع ثوانٍ.
التحقق من صحة المخطط للتطبيقات المستندة إلى Event Hubs SDK
يمكنك استخدام Azure Schema Registry لإجراء التحقق من صحة المخطط عند دفق البيانات باستخدام التطبيقات المستندة إلى Event Hubs SDK. يوفر Azure Schema Registry لمراكز الأحداث مستودعا مركزيا لإدارة المخططات ويمكنك توصيل تطبيقاتك الجديدة أو الحالية بسجل المخطط بسلاسة.
لمعرفة المزيد، راجع التحقق من صحة المخططات باستخدام Event Hubs SDK.
عينات ومرجع
يوفر هذا البدء السريع إرشادات خطوة بخطوة لتنفيذ سيناريو إرسال دفعة من الأحداث إلى مركز أحداث ثم تلقيها. لمزيد من العينات، حدد الارتباطات التالية.
- عينات مراكز الأحداث الموجودة على GitHub
- عينات معالج الأحداث الموجودة على GitHub
- عينة التحكم في الوصول إلى Azure استنادًا إلى الدور (Azure RBAC)
للحصول على مرجع مكتبة .NET الكامل، راجع وثائق SDK الخاصة بنا.
تنظيف الموارد
احذف مجموعة الموارد التي تحتوي على مساحة اسم مراكز الأحداث أو احذف مساحة الاسم فقط إذا كنت تريد الاحتفاظ بمجموعة الموارد.
المحتوى ذو الصلة
راجع البرنامج التعليمي التالي: