Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu hızlı başlangıçta, Azure.Messaging.EventHubs .NET kitaplığını kullanarak olay hub'ına olay göndermeyi ve ardından bu olayları olay hub'ından almayı öğreneceksiniz.
Not
Hızlı başlangıçlar, hizmeti hızla artırmanıza yöneliktir. Hizmeti zaten biliyorsanız, GitHub'daki .NET SDK depomuzda Event Hubs için .NET örneklerini görmek isteyebilirsiniz: GitHub'da Event Hubs örnekleri, GitHub'da olay işlemcisi örnekleri.
Önkoşullar
Azure Event Hubs'da yeniyseniz bu hızlı başlangıcı gerçekleştirmeden önce bkz . Event Hubs'a genel bakış .
Bu hızlı başlangıcı tamamlamak için aşağıdaki önkoşullara ihtiyacınız vardır:
- Microsoft Azure aboneliği. Azure Event Hubs da dahil olmak üzere Azure hizmetlerini kullanmak için bir aboneliğe ihtiyacınız vardır. Mevcut bir Azure hesabınız yoksa ücretsiz deneme sürümüne kaydolabilirsiniz.
-
Microsoft Visual Studio 2022. Azure Event Hubs istemci kitaplığı, C# 8.0'da kullanıma sunulan yeni özellikleri kullanır. Kitaplığı önceki C# dil sürümleriyle kullanmaya devam edebilirsiniz, ancak yeni söz dizimi kullanılamaz. Tam söz dizimini kullanmak için .NET Core SDK 3.0 veya üzeri ile derlemenizi ve dil sürümünü olarak
latest
ayarlamanızı öneririz. Visual Studio kullanıyorsanız, Visual Studio 2022 öncesi sürümler C# 8.0 projeleri oluşturmak için gereken araçlarla uyumlu değildir. Ücretsiz Community sürümü de dahil olmak üzere Visual Studio 2022 buradan indirilebilir. - Event Hubs ad alanı ve bir olay hub'ı oluşturun. İlk adım, Azure portalını kullanarak bir Event Hubs ad alanı ve bu ad alanında bir olay hub'ı oluşturmaktır. Ardından, uygulamanızın olay hub'ı ile iletişim kurması için gereken yönetim kimlik bilgilerini alın. Ad alanı ve olay hub'ı oluşturmak için bkz . Hızlı Başlangıç: Azure portalını kullanarak olay hub'ı oluşturma.
Azure'da uygulamanın kimliğini doğrulama
Bu hızlı başlangıç, Azure Event Hubs'a bağlanmanın iki yolunu gösterir:
- Parolasız (Microsoft Entra kimlik doğrulaması)
- Bağlantı dizesi
İlk seçenek, Bir Event Hubs ad alanına bağlanmak için Azure Microsoft Entra Id ve rol tabanlı erişim denetiminde (RBAC) güvenlik sorumlunuzu nasıl kullanacağınızı gösterir. Kodunuzda, yapılandırma dosyasında veya Azure Key Vault gibi güvenli bir depolama alanında sabit kodlanmış bağlantı dizesi olması konusunda endişelenmeniz gerekmez.
İkinci seçenek, Event Hubs ad alanına bağlanmak için bir bağlantı dizesi nasıl kullanacağınızı gösterir. Azure'da yeniyseniz bağlantı dizesi seçeneğini daha kolay takip edebilirsiniz. Gerçek dünyadaki uygulamalarda ve üretim ortamlarında parolasız seçeneği kullanmanızı öneririz. Daha fazla bilgi için bkz . Kimlik doğrulaması ve yetkilendirme. Ayrıca, genel bakış sayfasında parolasız kimlik doğrulaması hakkında daha fazla bilgi edinebilirsiniz.
Microsoft Entra kullanıcınıza rol atama
Yerel olarak geliştirirken, Azure Event Hubs'a bağlanan kullanıcı hesabının doğru izinlere sahip olduğundan emin olun. İleti göndermek ve almak için Azure Event Hubs Veri Sahibi rolüne ihtiyacınız vardır. Kendinize bu rolü atamak için Kullanıcı Erişimi Yöneticisi rolüne veya eylemi içeren Microsoft.Authorization/roleAssignments/write
başka bir role ihtiyacınız vardır. Azure portalı, Azure CLI veya Azure PowerShell'i kullanarak kullanıcıya Azure RBAC rolleri atayabilirsiniz. Daha fazla bilgi için bkz. Azure RBAC kapsamını anlama sayfası.
Aşağıdaki örnekte rol, Azure Event Hubs kaynaklarına tam erişim sağlayan kullanıcı hesabınıza atanır Azure Event Hubs Data Owner
. Gerçek bir senaryoda, kullanıcılara yalnızca daha güvenli bir üretim ortamı için gereken minimum izinleri vermek için En Az Ayrıcalık İlkesi'ni izleyin.
Azure Event Hubs için Azure yerleşik rolleri
Azure Event Hubs için, Azure portalı ve Azure kaynak yönetimi API'sini kullanarak ad alanlarının ve tüm ilgili kaynakların yönetimi Azure RBAC modeli kullanılarak zaten korunur. Azure, Event Hubs ad alanına erişim yetkisi vermek için aşağıdaki yerleşik rolleri sağlar:
- Azure Event Hubs Veri Sahibi: Event Hubs ad alanına ve varlıklarına (kuyruklar, konular, abonelikler ve filtreler) veri erişimini etkinleştirir.
- Azure Event Hubs Veri Göndereni: Gönderene Event Hubs ad alanına ve varlıklarına erişim vermek için bu rolü kullanın.
- Azure Event Hubs Veri Alıcısı: Alıcıya Event Hubs ad alanına ve varlıklarına erişim vermek için bu rolü kullanın.
Özel bir rol oluşturmak istiyorsanız, Event Hubs işlemleri için gereken haklar bölümüne bakın.
Önemli
Çoğu durumda rol atamasının Azure'a yayılması bir veya iki dakika sürer. Nadir durumlarda, sekiz dakikaya kadar sürebilir. Kodunuzu ilk kez çalıştırdığınızda kimlik doğrulama hataları alıyorsanız, birkaç dakika bekleyin ve yeniden deneyin.
Azure portalında ana arama çubuğunu veya sol gezintiyi kullanarak Event Hubs ad alanınızı bulun.
Genel bakış sayfasında, sol taraftaki menüden Erişim denetimi (IAM) öğesini seçin.
Erişim denetimi (IAM) sayfasında Rol atamaları sekmesini seçin.
Üst menüden + Ekle'yi seçin. Ardından Rol ataması ekle'yi seçin.
Sonuçları istenen role göre filtrelemek için arama kutusunu kullanın. Bu örnek için eşleşen sonucu arayın
Azure Event Hubs Data Owner
ve seçin. Ardından İleri'yi seçin.Erişim ata'nın altında Kullanıcı, grup veya hizmet sorumlusu'na tıklayın. Ardından + Üye seç'i seçin.
İletişim kutusunda Microsoft Entra kullanıcı adınızı (genellikle user@domain e-posta adresiniz) arayın. İletişim kutusunun alt kısmındaki Seç'i seçin.
Son sayfaya gitmek için Gözden geçir ve ata'yı seçin. İşlemi tamamlamak için Gözden geçir ve yeniden ata komutunu seçin.
Visual Studio'yu başlatma ve Azure'da oturum açma
Aşağıdaki adımları kullanarak service bus ad alanına erişim yetkisi vekleyebilirsiniz:
Visual Studio’yu başlatın. Başlarken penceresini görüyorsanız, sağ bölmedeki Kod olmadan devam et bağlantısını seçin.
Visual Studio'nun sağ üst kısmındaki Oturum aç düğmesini seçin.
Daha önce bir rol atadığınız Microsoft Entra hesabını kullanarak oturum açın.
Olayları olay hub'ına gönderme
Bu bölümde, oluşturduğunuz olay hub'ına olay göndermek için bir .NET Core konsol uygulamasının nasıl oluşturulacağı gösterilir.
Konsol uygulaması oluşturma
Visual Studio 2022 zaten açıksa, menüden Dosya'yı seçin, Yeni'yi ve ardından Proje'yi seçin. Aksi takdirde, Visual Studio 2022'yi başlatın ve açılan pencere görürseniz Yeni proje oluştur'u seçin.
Yeni proje oluştur iletişim kutusunda aşağıdaki adımları uygulayın: Bu iletişim kutusunu görmüyorsanız, menüden Dosya'yı seçin, Yeni'yi ve ardından Proje'yi seçin.
Programlama dili için C# öğesini seçin.
Uygulamanın türü için Konsol'a tıklayın.
Sonuçlar listesinden Konsol Uygulaması'nı seçin.
Ardından İleri'yi seçin.
Proje adı olarak EventHubsSender, çözüm adı için EventHubsQuickStart yazın ve İleri'yi seçin.
Ek bilgiler sayfasında Oluştur'u seçin.
NuGet paketlerini projeye ekleme
Menüden Araçlar
Azure.Messaging.EventHubs ve Azure.Identity NuGet paketlerini yüklemek için aşağıdaki komutları çalıştırın. İkinci komutu çalıştırmak için ENTER tuşuna basın.
Install-Package Azure.Messaging.EventHubs Install-Package Azure.Identity
Olay hub'ına olay göndermek için kod yazma
Dosyadaki
Program.cs
mevcut kodu aşağıdaki örnek kodla değiştirin. Ardından, parametrelerin<EVENT_HUB_NAMESPACE>
ve<HUB_NAME>
yer tutucu değerlerini Event Hubs ad alanınızın ve olay hub'ınızın adlarıyla değiştirinEventHubProducerClient
. Örneğin:"spehubns0309.servicebus.windows.net"
ve"spehub"
.Koddaki önemli adımlar şunlardır:
- Ad alanını ve olay hub'ı adını kullanarak bir EventHubProducerClient nesnesi oluşturur.
- EventHubProducerClient nesnesinde CreateBatchAsync yöntemini çağırarak bir EventDataBatch nesnesi oluşturur.
- EventDataBatch.TryAdd yöntemini kullanarak toplu işleme olay ekleyin.
- EventHubProducerClient.SendAsync yöntemini kullanarak toplu iletileri olay hub'ına gönderir.
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(); }
Projeyi derleyin ve hata olmadığından emin olun.
Programı çalıştırın ve onay iletisini bekleyin.
A batch of 3 events has been published.
Not
Microsoft Entra kimlik doğrulamasını kullanırken "InvalidIssuer: Belirteç veren geçersiz" hatasını alırsanız, bunun nedeni yanlış Microsoft Entra Kiracı Kimliği'nin kullanılması olabilir. Kodunuzda, Microsoft Entra Tenant ID'sini açıkça belirtmek için 'new DefaultAzureCredential()' yerine 'new DefaultAzureCredential(new DefaultAzureCredentialOptions {TenantId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"})' yazın.
Önemli
Parolasız (Microsoft Entra'nın Rol Tabanlı Erişim Denetimi) kimlik doğrulamasını kullanıyorsanız Araçlar'ı ve ardından Seçenekler'i seçin. Seçenekler penceresinde Azure Hizmet Kimlik Doğrulaması'nı genişletin ve Hesap Seçimi'ni seçin. Azure Event Hubs Veri Sahibi rolüne eklenmiş olan hesabı kullandığınızı Event Hubs ad alanında onaylayın.
Azure portalındaki Event Hubs ad alanı sayfasında İletiler grafiğinde üç gelen ileti görürsünüz. Gerekirse grafiği güncelleştirmek için sayfayı yenileyin. İletilerin alındığını göstermesi birkaç saniye sürebilir.
Etkinlik merkezinden etkinlikleri al
Bu bölümde, olay işlemcisi kullanarak bir olay hub'ından olay alan bir .NET Core konsol uygulamasının nasıl yazıldığını gösterir. Olay işlemcisi olay hub'larından olay almayı basitleştirir.
Azure Depolama Hesabı ve blob kapsayıcısı oluşturma
Bu hızlı başlangıçta denetim noktası deposu olarak Azure Depolama'yı kullanacaksınız. Azure Depolama hesabı oluşturmak için bu adımları izleyin.
- Azure Depolama hesabı oluşturma
- Blob kapsayıcısı oluştur
- Microsoft Entra ID (parolasız) kimlik doğrulaması veya ad alanına bir bağlantı dizesi kullanarak blob kapsayıcısına kimlik doğrulaması yapın.
Azure Blob Depolama'yı denetim noktası deposu olarak kullanırken şu önerileri izleyin:
- Her tüketici grubu için ayrı bir kapsayıcı kullanın. Aynı depolama hesabını kullanabilirsiniz, ancak her grup için bir kapsayıcı kullanabilirsiniz.
- Depolama hesabını başka bir şey için kullanmayın.
- Kapsayıcıyı başka hiçbir şey için kullanmayın.
- Depolama hesabını dağıtılan uygulamayla aynı bölgede oluşturun. Uygulama şirket içindeyse, mümkün olan en yakın bölgeyi seçmeyi deneyin.
Azure portalının Depolama hesabı sayfasındaki Blob hizmeti bölümünde aşağıdaki ayarların devre dışı bırakıldığından emin olun.
- Hiyerarşik ad alanı
- Blob geçici silme
- Sürüm oluşturma
Yerel olarak geliştirirken blob verilerine erişen kullanıcı hesabının doğru izinlere sahip olduğundan emin olun. Blob verilerini okumak ve yazmak için Depolama Blob Verisi Katkıcısı rolüne ihtiyacınız var. Kendinize bu rolü atamak için Kullanıcı Erişimi Yöneticisi rolüne veya Microsoft.Authorization/roleAssignments/write eylemini içeren başka bir role atanmalısınız. Azure portalı, Azure CLI veya Azure PowerShell'i kullanarak kullanıcıya Azure RBAC rolleri atayabilirsiniz. Daha fazla bilgi için Azure RBAC kapsamını anlama bölümüne bakın.
Bu senaryoda, En Az Ayrıcalık İlkesi'ni izlemek için depolama hesabı kapsamındaki kullanıcı hesabınıza izinler atarsınız. Bu uygulama kullanıcılara yalnızca gereken minimum izinleri verir ve daha güvenli üretim ortamları oluşturur.
Aşağıdaki örnek, depolama hesabınızdaki blob verilerine hem okuma hem de yazma erişimi sağlayan Depolama Blob Verileri Katkıda Bulunanı rolünü kullanıcı hesabınıza atar.
Önemli
Çoğu durumda rol atamasının Azure'a yayılması bir veya iki dakika sürer. Nadir durumlarda, sekiz dakikaya kadar sürebilir. Kodunuzu ilk kez çalıştırdığınızda kimlik doğrulama hataları alıyorsanız, birkaç dakika bekleyin ve yeniden deneyin.
Azure portalında ana arama çubuğunu veya sol gezintiyi kullanarak depolama hesabınızı bulun.
Depolama hesabı sayfasında sol taraftaki menüden Erişim denetimi (IAM) öğesini seçin.
Erişim denetimi (IAM) sayfasında Rol atamaları sekmesini seçin.
Üst menüden + Ekle'yi seçin. Ardından Rol ataması ekle'yi seçin.
Sonuçları istenen role göre filtrelemek için arama kutusunu kullanın. Bu örnek için Depolama Blobu Veri Katkıda Bulunanını arayın. Eşleşen sonucu seçin ve ardından Sonrakiseçin.
Erişimi ata'nın altında, Kullanıcı, grup veya hizmet ilkesi'ni seçin ve ardından + Üyeleri seç'i seçin.
İletişim kutusunda Microsoft Entra kullanıcı adınızı (genellikle user@domain e-posta adresiniz) arayın ve iletişim kutusunun alt kısmındaki Seç'i seçin.
Son sayfaya gitmek için Gözden geçir ve ata'yı seçin. İşlemi tamamlamak için Gözden geçir ve yeniden ata komutunu seçin.
Alıcı için proje oluşturma
- Çözüm Gezgini penceresinde EventHubQuickStart çözümüne sağ tıklayın, Ekle'nin üzerine gelin ve Yeni Proje'yi seçin.
- Konsol uygulaması'yı ve ardından İleri'yi seçin.
- Proje adı olarak EventHubsReceiver yazın ve Oluştur'u seçin.
- Çözüm Gezgini penceresinde EventHubsReceiver'a sağ tıklayın ve Başlangıç Projesi Olarak Ayarla'yı seçin.
NuGet paketlerini projeye ekleme
Menüden Araçlar
Paket Yöneticisi Konsolu penceresinde EventHubsReceiver öğesinin Varsayılan proje için seçili olduğunu onaylayın. Aksi takdirde, EventHubsReceiver'ı seçmek için açılır listeyi kullanın.
Azure.Messaging.EventHubs ve Azure.Identity NuGet paketlerini yüklemek için aşağıdaki komutu çalıştırın. Son komutu çalıştırmak için ENTER tuşuna basın.
Install-Package Azure.Messaging.EventHubs Install-Package Azure.Messaging.EventHubs.Processor Install-Package Azure.Identity
Kodu güncelleştirme
Program.cs dosyasının içeriğini aşağıdaki kodla değiştirin:
Dosyadaki
Program.cs
mevcut kodu aşağıdaki örnek kodla değiştirin. Ardından,<STORAGE_ACCOUNT_NAME>
URI için<BLOB_CONTAINER_NAME>
veBlobContainerClient
yer tutucu değerlerini değiştirin.<EVENT_HUB_NAMESPACE>
için<HUB_NAME>
veEventProcessorClient
yer tutucu değerlerini de değiştirin.Koddaki önemli adımlar şunlardır:
- Event Hubs ad alanını ve olay hub'ı adını kullanarak bir EventProcessorClient nesnesi oluşturur. Daha önce oluşturduğunuz Azure depolama alanında kapsayıcı için BlobContainerClient nesnesi oluşturmanız gerekir.
- EventProcessorClient nesnesinin ProcessEventAsync ve ProcessErrorAsync olayları için işleyicileri belirtir.
- EventProcessorClient nesnesinde StartProcessingAsync'i çağırarak olayları işlemeye başlar.
- EventProcessorClient nesnesinde StopProcessingAsync çağırarak 30 saniye sonra olayları işlemeyi durdurur.
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_CONTAINER_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; }
Projeyi derleyin ve hata olmadığından emin olun.
Not
Daha fazla bilgi açıklamaları içeren tam kaynak kodu için GitHub'da bu dosyaya bakın.
Alıcı uygulamasını çalıştırın.
Etkinliklerin alındığını belirten bir mesaj görmelisiniz. Alınan olay iletisini gördükkten sonra ENTER tuşuna basın.
Received event: Event 1 Received event: Event 2 Received event: Event 3
Bu olaylar, daha önce gönderen programını çalıştırarak olay hub'ına gönderdiğiniz üç olaydır.
Azure portalında, event hubs'ın alıcı uygulamaya gönderdiği üç giden ileti olduğunu doğrulayabilirsiniz. Grafiği güncelleştirmek için sayfayı yenileyin. İletilerin alındığını göstermesi birkaç saniye sürebilir.
Event Hubs SDK tabanlı uygulamalar için şema doğrulaması
Event Hubs SDK tabanlı uygulamalarınızla veri akışı yaparken şema doğrulaması gerçekleştirmek için Azure Schema Registry'yi kullanabilirsiniz. Event Hubs'ın Azure Schema Registry'sinde şemaları yönetmek için merkezi bir depo sağlanır ve yeni veya mevcut uygulamalarınızı Schema Registry ile sorunsuz bir şekilde bağlayabilirsiniz.
Daha fazla bilgi edinmek için bkz . Event Hubs SDK ile şemaları doğrulama.
Örnekler ve başvuru
Bu hızlı başlangıç, bir olay hub'ına toplu olay gönderme ve ardından alma senaryolarını uygulamaya yönelik adım adım yönergeler sağlar. Daha fazla örnek için aşağıdaki bağlantıları seçin.
- GitHub'da Event Hubs örnekleri
- GitHub'da olay işlemcisi örnekleri
- Azure rol tabanlı erişim denetimi (Azure RBAC) örneği
Tüm .NET kütüphane referansı için SDK belgelerimize bakın.
Kaynakları temizleme
Event Hubs ad alanına sahip kaynak grubunu silin veya kaynak grubunu korumak istiyorsanız yalnızca ad alanını silin.
İlgili içerik
Aşağıdaki eğitime göz atın: