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.ServiceBus .NET kitaplığını kullanarak Service Bus konusuna ileti gönderme ve abonelikten bu konuya ileti alma işlemleri gösterilmektedir.
Bu hızlı başlangıçta aşağıdaki adımları uygulayacaksınız:
- Azure portalı ile Service Bus ad alanı oluşturma.
- Azure portalı ile Service Bus konusu oluşturma.
- Azure portalı ile bu konu için bir Service Bus aboneliği oluşturma.
- Konuya bir dizi ileti göndermek için bir .NET konsol uygulaması yazın.
- Abonelikten bu iletileri almak için bir .NET konsol uygulaması yazın.
Not
Bu hızlı başlangıçta, Bir Service Bus konusuna toplu ileti gönderme ve bu iletileri konunun bir aboneliğinden alma gibi basit bir senaryoyu uygulamaya yönelik adım adım yönergeler sağlanır. Diğer ve gelişmiş senaryolarla ilgili daha fazla örnek için bkz . GitHub'da Service Bus .NET örnekleri.
- Bu hızlı başlangıçta Azure Service Bus'a bağlanmanın iki yolu gösterilmektedir: bağlantı dizesi ve parolasız. İlk seçenek, Service Bus ad alanına bağlanmak için bir bağlantı dizesi nasıl kullanacağınızı gösterir. İkinci seçenek, Bir Service Bus ad alanına bağlanmak için 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 depolama alanında sabit kodlanmış bağlantı dizesi olması konusunda endişelenmeniz gerekmez. 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.
Önkoşullar
Hizmette yeniyseniz, bu hızlı başlangıcı gerçekleştirmeden önce Service Bus'a genel bakışı inceleyin.
- Azure aboneliği. Azure Service Bus 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.
-
Visual Studio 2022 veya üzeri. Örnek uygulama, C# 10'da tanıtılan yeni özellikleri kullanır. Service Bus istemci kitaplığını önceki C# dil sürümleriyle kullanmaya devam edebilirsiniz, ancak söz dizimi farklılık gösterebilir. En son söz dizimini kullanmak için .NET 6.0 veya üzerini yüklemenizi ve dil sürümünü olarak
latestayarlamanızı öneririz. Visual Studio kullanıyorsanız, Visual Studio 2022 öncesi sürümler C# 10 projeleri oluşturmak için gereken araçlarla uyumlu değildir.
Azure portalında bir ad alanı oluşturma
Azure'da Service Bus mesajlaşma varlıklarını kullanmaya başlamak için Azure genelinde benzersiz bir ada sahip bir ad alanı oluşturun. Ad alanı, uygulamanızdaki kuyruklar ve başlıklar gibi Service Bus kaynakları için bir kapsam kapsayıcısı sağlar.
Ad alanı oluşturmak için:
Azure Portal’ında oturum açın.
Sol üst kısımdan açılır menüyü seçin ve Tüm hizmetler sayfasına gidin.
Sol gezinti çubuğunda Tümleştirme'yi seçin.
Aşağı kaydırarak Mesajlaşma hizmetleri'ne gelin, farenizi Service Bus'ın üzerine getirin ve oluştur'u seçin.
Ad alanı oluştur sayfasının Temel Bilgiler sekmesinde şu adımları izleyin:
Abonelik için ad alanının oluşturulacağı bir Azure aboneliği seçin.
Kaynak grubu için mevcut bir kaynak grubunu seçin veya yeni bir kaynak grubu oluşturun.
Aşağıdaki adlandırma kurallarına uyan bir Ad Alanı adı girin:
- Adın Azure genelinde benzersiz olması gerekir. Adın kullanılabilirliği sistem tarafından hemen denetlenir.
- Ad uzunluğu en az 6 ve en fazla 50 karakterdir.
- Ad yalnızca harf, sayı ve kısa çizgi
-içerebilir. - Ad bir harfle başlamalı ve bir harf veya numarayla bitmelidir.
- Ad
-sbveya-mgmtile bitmiyor.
Konum için ad alanınızı barındıracak bölgeyi seçin.
Fiyatlandırma katmanı için ad alanı için fiyatlandırma katmanını (Temel, Standart veya Premium) seçin. Bu hızlı başlangıç için Standart'ı seçin.
Premium katmanını seçerseniz, ad alanı için coğrafi çoğaltmayı etkinleştirebilirsiniz. Coğrafi çoğaltma özelliği, bir ad alanının meta verilerinin ve verilerinin birincil bölgeden bir veya daha fazla ikincil bölgeye sürekli çoğaltılmasını sağlar.
Önemli
Konuları ve abonelikleri kullanmak istiyorsanız Standart veya Premium'u seçin. Temel fiyatlandırma katmanı konuları ve abonelikleri desteklemez.
Premium fiyatlandırma katmanını seçtiyseniz, mesajlaşma birimi sayısını belirtin. Premium katman, her iş yükünün yalıtılmış olarak çalışması için CPU ve bellek düzeyinde kaynak yalıtımı sağlar. Bu kaynak kapsayıcısı mesajlaşma birimi olarak adlandırılır. Premium ad alanında en az bir mesajlaşma birimi vardır. Her Service Bus Premium ad alanı için 1, 2, 4, 8 veya 16 mesajlaşma birimleri seçebilirsiniz. Daha fazla bilgi için bkz. Service Bus premium mesajlaşma katmanı.
Sayfanın alt kısmındaki Gözden geçir ve oluştur'u seçin.
Gözden geçir ve oluştur sayfasında ayarları gözden geçirin ve Oluştur'u seçin.
Kaynağın dağıtımı başarılı olduktan sonra dağıtım sayfasında Kaynağa git'i seçin.
Service Bus ad alanınızın giriş sayfasını görürsünüz.
Azure portalını kullanarak konu oluşturma
Service Bus Ad Alanı sayfasında, sol taraftaki gezinti menüsünde Varlıklar'ı genişletin ve soldaki menüden Konular'ı seçin.
Araç çubuğunda + Konu'ya tıklayın.
Konu için bir ad girin. Diğer seçenekleri varsayılan değerlerinde bırakın.
Oluştur'u belirleyin.
Konuya abonelik oluşturma
Önceki bölümde oluşturduğunuz konuyu seçin.
Service Bus Konusu sayfasında, araç çubuğundan + Abonelik seçeneğine tıklayın.
Abonelik oluştur sayfasında şu adımları izleyin:
Aboneliğin adınıS1 olarak girin.
Ardından, aboneliği oluşturmak için Oluştur'u seçin.
Azure'da uygulamanın kimliğini doğrulama
Bu makalede Azure Service Bus'a bağlanmanın iki yolu gösterilmektedir: parolasız ve bağlantı dizesi.
İlk seçenek, Service Bus ad alanına bağlanmak için 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ış bir bağlantı dizesi olması konusunda endişelenmeniz gerekmez.
İkinci seçenek, Service Bus 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. Service Bus kimlik doğrulaması ve yetkilendirmesi. Parolasız kimlik doğrulaması hakkında daha fazla bilgi için bkz. .NET uygulamalarının kimliğini doğrulama.
Microsoft Entra kullanıcınıza rol atama
Yerel olarak geliştirirken, Azure Service Bus'a bağlanan kullanıcı hesabının doğru izinlere sahip olduğundan emin olun. İleti göndermek ve almak için Azure Service Bus 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. Rol atamaları için kullanılabilir kapsamlar hakkında daha fazla bilgi edinmek için bkz. Azure RBAC kapsamını anlama.
Kullanıcı hesabınıza, Azure Service Bus kaynaklarına tam erişim sağlayan Azure Service Bus Data Owner rolü atanır. Gerçek bir senaryoda, kullanıcılara yalnızca daha güvenli bir üretim ortamı için gereken minimum izinleri vermek için en düşük ayrıcalık ilkesini izleyin.
Azure Service Bus için Azure yerleşik rolleri
Azure Service Bus 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, Service Bus ad alanına erişim yetkisi vermek için aşağıdaki Azure yerleşik rollerini sağlar:
- Azure Service Bus Veri Sahibi: Kuyruklar, konular, abonelikler ve filtreler dahil olmak üzere Service Bus ad alanına ve varlıklarına veri erişimini etkinleştirir. Bu rolün bir üyesi kuyruklardan veya konu başlıklarından/aboneliklerden ileti gönderip alabilir.
- Azure Service Bus Veri Gönderici: Service Bus ad alanı ve varlıklarına erişim vermek için bu rolü kullanın.
-
Azure Service Bus Veri Alıcısı: Bu rolü kullanarak
receive'e Service Bus ad alanı ve varlıklarına erişim sağlayın.
Özel bir rol oluşturmak istiyorsanız Service Bus işlemleri için gereken haklar bölümüne bakın.
Microsoft Entra kullanıcısını Azure Service Bus Sahibi rolüne ekleme
Microsoft Entra kullanıcı adınızı Service Bus ad alanı düzeyinde Azure Service Bus Veri Sahibi rolüne ekleyin. Bu yapılandırma, kullanıcı hesabınız bağlamında çalışan bir uygulamanın kuyruğa veya konuya ileti göndermesine olanak tanır. Bir kuyruktan veya bir konuya ait abonelikten ileti alabilir.
Ö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 Service Bus Ad Alanı sayfanız açık değilse ana arama çubuğunu veya sol gezintiyi kullanarak Service Bus 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 ve 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 Service Bus Data Ownerve seçin. Ardından İleri'yi seçin.Erişim atayın
altında Kullanıcı, grup veya hizmet sorumlusu'nu seçin ve ardından + Üyeleri seç öğesini 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.
Gözden geçir + ata'yı seçerek son sayfaya geçin ve ardından işlemi tamamlamak için Gözden geçir + ata'yı tekrar seçin.
Visual Studio'yu başlatma
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.
Konuya ileti gönderme
Bu bölümde, Service Bus konusuna ileti göndermek için bir .NET konsol uygulamasının nasıl oluşturulacağı gösterilmektedir.
Not
Bu hızlı başlangıçta, Bir Service Bus konusuna toplu ileti gönderme ve bu iletileri konunun bir aboneliğinden alma gibi basit bir senaryoyu uygulamaya yönelik adım adım yönergeler sağlanır. Diğer ve gelişmiş senaryolarla ilgili daha fazla örnek için bkz . GitHub'da Service Bus .NET örnekleri.
Konsol uygulaması oluşturma
- Visual Studio'da Dosya ->Yeni ->Proje menüsünü 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 TopicSender, çözüm adı için ServiceBusTopicQuickStart girin ve İleri'yi seçin.
- Ek bilgiler sayfasında Oluştur'u seçerek çözümü ve projeyi oluşturun.
NuGet paketlerini projeye ekleme
Menüden Araçlar>NuGet Package Manager>Package Manager Console seçeneklerini seçin.
Azure.Messaging.ServiceBus NuGet paketini yüklemek için aşağıdaki komutu çalıştırın.
Install-Package Azure.Messaging.ServiceBusAzure.Identity NuGet paketini yüklemek için aşağıdaki komutu çalıştırın.
Install-Package Azure.Identity
Konuya ileti göndermek için kod ekleme
Program.cs içeriğini aşağıdaki kodla değiştirin. Önemli adımlar, kod açıklamalarında ek bilgilerle birlikte bu bölümde özetlenmiştir.
-
ServiceBusClient nesnesini
DefaultAzureCredentialnesnesini kullanarak oluşturur.DefaultAzureCredentialAzure Service Bus'ta kimlik doğrulaması yapmak için Visual Studio oturum açma bilgilerinizi otomatik olarak bulur ve kullanır. -
ServiceBusClientnesnesi üzerinde CreateSender yöntemini çağırarak belirli bir Service Bus konusuna yönelik bir ServiceBusSender nesnesi oluşturur. - ServiceBusSender.CreateMessageBatchAsync kullanarak bir ServiceBusMessageBatch nesnesi oluşturur.
- ServiceBusMessageBatch.TryAddMessage kullanarak toplu işleme ileti ekleyin.
- ServiceBusSender.SendMessagesAsync yöntemini kullanarak toplu iletileri Service Bus konusuna gönderir.
Önemli
Kod parçacığındaki yer tutucu değerlerini (
<NAMESPACE-NAME>ve<TOPIC-NAME>) Service Bus ad alanınızın ve konu başlığınızın adlarıyla güncelleştirin.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();-
ServiceBusClient nesnesini
Projeyi derleyin ve hata olmadığından emin olun.
Programı çalıştırın ve onay iletisini bekleyin.
A batch of 3 messages has been published to the topicÖ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 şu adımları izleyin:
Service Bus ad alanınıza gidin.
Genel Bakış sayfasındaki orta alt bölmede Konular sekmesine geçin ve Service Bus konusunu seçin. Aşağıdaki örnekte, şeklindedir
mytopic.
Service Bus Konusu sayfasında, alttaki Ölçümler bölümündeki İletiler grafiğinde, konu için üç gelen ileti olduğunu görebilirsiniz. Değeri görmüyorsanız, birkaç dakika bekleyin ve güncelleştirilmiş grafiği görmek için sayfayı yenileyin.
Alt bölmede aboneliği seçin. Aşağıdaki örnekte S1'tir. Service Bus Aboneliği sayfasında Etkin ileti sayısını 3 olarak görürsünüz. Abonelik, konuya gönderdiğiniz üç iletiyi aldı, ancak henüz hiçbir alıcı bunları almadı.
Abonelikten ileti alma
Bu bölümde, Service Bus konusundaki abonelikten ileti alan bir .NET konsol uygulaması oluşturacaksınız.
Not
Bu hızlı başlangıçta, Bir Service Bus konusuna toplu ileti gönderme ve bu iletileri konunun bir aboneliğinden alma gibi basit bir senaryoyu uygulamaya yönelik adım adım yönergeler sağlanır. Diğer ve gelişmiş senaryolarla ilgili daha fazla örnek için bkz . GitHub'da Service Bus .NET örnekleri.
Alıcı için proje oluşturma
- Çözüm Gezgini penceresinde ServiceBusTopicQuickStart çö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ı için SubscriptionReceiver girin ve İleri'yi seçin.
- Ek bilgiler sayfasında Oluştur'u seçin.
- Çözüm Gezgini penceresinde SubscriptionReceiver'a sağ tıklayın ve Başlangıç Projesi Olarak Ayarla'yı seçin.
NuGet paketlerini projeye ekleme
Menüden Araçlar>NuGet Paket Yöneticisi>Paket Yöneticisi Konsolu öğelerini seçin.
Varsayılan proje açılan listesindenSubscriptionReceiver'ı seçin.
Azure.Messaging.ServiceBus NuGet paketini yüklemek için aşağıdaki komutu çalıştırın.
Install-Package Azure.Messaging.ServiceBusAzure.Identity NuGet paketini yüklemek için aşağıdaki komutu çalıştırın.
Install-Package Azure.Identity
Abonelikten ileti almak için kod ekleme
Bu bölümde, abonelikten iletileri almak için kod ekleyebilirsiniz.
Program.csöğesinin mevcut içeriğini şu özellikler ve yöntemlerle değiştirin: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; }Aşağıdaki kodu sonuna
Program.csekleyin.-
DefaultAzureCredentialnesnesini kullanarak bir ServiceBusClient nesnesi oluşturur.DefaultAzureCredentialAzure Service Bus'ta kimlik doğrulaması yapmak için Visual Studio oturum açma bilgilerinizi otomatik olarak bulur ve kullanır. -
ServiceBusClientnesnesi üzerinde belirtilen Service Bus konusu için bir ServiceBusProcessor nesnesi oluşturmak amacıyla CreateProcessor yöntemini çağırır. - Nesnenin ProcessMessageAsync ve ProcessErrorAsync olayları için işleyicileri
ServiceBusProcessorbelirtir. - nesne üzerinde StartProcessingAsync çağrısını yaparak iletileri işlemeye
ServiceBusProcessorbaşlar. - Kullanıcı işlemi sonlandırmak için bir tuşa bastığında nesnesinde StopProcessingAsync'i
ServiceBusProcessorçağırır.
Önemli
Kod parçacığındaki yer tutucu değerlerini (
<NAMESPACE-NAME>,<TOPIC-NAME>,<SUBSCRIPTION-NAME>) Service Bus ad alanınızın, konu başlığınızın ve aboneliğinizin adlarıyla güncelleştirin.Daha fazla bilgi için bkz. kod açıklamaları.
// 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(); }-
İşte
'inizin görünmesi gerektiği şekil: 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(); }Projeyi derleyin ve hata olmadığından emin olun.
Alıcı uygulamasını çalıştırın. Alınan iletileri görmeniz gerekir. Alıcıyı ve uygulamayı durdurmak için herhangi bir tuşa basın.
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 messagesPortalı yeniden denetleyin.
Service Bus Konusu sayfasındaki İletiler grafiğinde üç gelen ileti ve üç giden ileti görürsünüz. Bu sayıları görmüyorsanız, birkaç dakika bekleyin ve güncelleştirilmiş grafiği görmek için sayfayı yenileyin.
Service Bus Aboneliği sayfasında Etkin ileti sayısını sıfır olarak görürsünüz. Bunun nedeni, bir alıcının bu abonelik üzerinden iletiler alıp işlemi tamamladığıdır.
İlgili içerik
Aşağıdaki belgelere ve örneklere bakın: