Azure Service Bus kuyruklarını kullanan çok katmanlı .NET uygulaması
Visual Studio ve .NET için ücretsiz Azure SDK kullanarak Microsoft Azure'a yönelik geliştirme işlemleri oldukça kolaydır. Bu öğretici, yerel ortamınızda çalışan birden çok Azure kaynağı kullanan bir uygulama oluşturmak için sizi adım adım yönlendirir.
Aşağıdakileri öğreneceksiniz:
- Tek bir indirme ve yükleme işlemiyle bilgisayarınızı Azure geliştirmesine elverişli hale getirme.
- Azure'a yönelik geliştirmeler için Visual Studio'yu kullanma.
- Web ve çalışan rollerini kullanarak Azure'da çok katmanlı uygulama oluşturma.
- Service Bus kuyruklarını kullanarak katmanlar arasında iletişim kurma.
Not
Bu öğreticiyi tamamlamak için bir Azure hesabınızın olması gerekir. MSDN abone avantajınızı etkinleştirebilir ya da ücretsiz hesap için kaydolabilirsiniz.
Bu öğreticide, çok katmanlı uygulamayı bir Azure bulut hizmetinde derleyip çalıştıracaksınız. Ön uç, bir ASP.NET MVC web rolüdür. Arka uç ise Service Bus kuyruğu kullanan bir çalışan rolüdür. Aynı çok katmanlı uygulamayı, bulut hizmeti yerine bir Azure web sitesine dağıtılan web projesi özelliğine sahip ön uçla da oluşturabilirsiniz. Ayrıca, .NET bulut/şirket içi karma uygulama öğreticisine de başvurabilirsiniz.
Aşağıdaki ekran görüntüsünde tamamlanmış uygulama gösterilmektedir.
Senaryoya genel bakış: roller arası iletişim
İşlenmek üzere bir sipariş göndermeniz için web rolünde çalışan ön uç kullanıcı arabirimi bileşeninin çalışan rolünde çalışmakta olan orta katman mantığı ile etkileşim içinde olması gerekir. Bu örnekte, katmanlar arasındaki iletişim için Service Bus mesajlaşması kullanılır.
Web katmanı ve orta katman arasında Service Bus mesajlaşmasını kullanma iki bileşeni birbirinden ayırır. Doğrudan mesajlaşmanın (TCP veya HTTP) aksine, web katmanı doğrudan orta katmana bağlanmaz; bunun yerine, iş birimlerini iletiler olarak Service Bus'a göndererek orta katman bunları tüketmeye ve işlemeye hazır olana kadar bunları güvenilir bir şekilde korur.
Service Bus, kuyruklar ve konu başlıkları olmak üzere aracılı mesajlaşmayı desteklemek için iki varlık sunar. Kuyruklar kısmında, kuyruğa gönderilen her ileti tek bir alıcı tarafından kullanılır. Konu başlıkları ise yayınlanan tüm iletilerin konu başlığına kayıtlı olan bir abonelikte kullanılabilir hale geldiği yayımla/paylaş düzenini destekler. Her abonelik mantıksal olarak kendi ileti kuyruğunu korur. Ayrıca abonelikler, filtreyle eşleşen abonelik kuyruğuna gönderilen ileti kümesini sınırlayan filtre kuralları ile yapılandırabilir. Aşağıdaki örnekte Service Bus kuyrukları kullanılır.
Bu iletişim mekanizması, doğrudan mesajlaşma ile karşılaştırıldığında birçok avantaj sunar:
Zamana bağlı ayırma. Zaman uyumsuz mesajlaşma düzenini kullandığınızda, üreticilerin ve tüketicilerin aynı anda çevrimiçi olması gerekmez. Service Bus, kullanıcı taraf iletileri almaya hazır olana kadar güvenli bir şekilde depolar. Bu özellik, dağıtılan uygulamanın bileşenlerinin isteğe bağlı olarak (örneğin, bakım için) veya bir bileşenin çökmesinden dolayı bağlantısının sistemin tamamını etkilemeden kesilmesine olanak sağlar. Ayrıca, kullanıcı uygulamanın yalnızca günün belirli zamanlarında çevrimiçi olması gerekebilir.
Yük dengeleme. Birçok uygulamada, sistem yükü zamana göre değişirken çalışmanın her birimi için gereken işleme süresi genel olarak aynıdır. Bir kuyruk aracılığıyla ileti üreticileri ve tüketicileri arasında bağlantı kurmak, kullanıcı uygulamaya (çalışan) en fazla yük yerine yalnızca ortalama yük sağlanması gerektiği anlamına gelir. Gelen yük hacmi değiştikçe kuyruğun derinliği artar ve daralır. Bu işlem, uygulama yükünü sunmak için gereken altyapı miktarı bağlamında doğrudan para tasarrufu sağlar.
Yük dengeleme. Yük arttıkça kuyruktan okunmak üzere daha fazla çalışan işlemi eklenebilir. Her ileti yalnızca bir çalışan işlemi tarafından işlenir. Ayrıca, bu çekme tabanlı yük dengeleme, çalışan makineleri işleme gücü açısından farklılık gösterse bile çalışan makinelerin en iyi şekilde kullanılmasını sağlar, çünkü iletileri kendi maksimum hızlarında çekerler. Bu düzen, genelde rakip tüketici düzeni olarak adlandırılır.
Aşağıdaki bölümlerde, bu mimariyi uygulayan kod ele alınır.
Önkoşullar
Bu öğreticide, ve ServiceBusAdministrationClient
nesneleri oluşturmak ServiceBusClient
için Microsoft Entra kimlik doğrulamasını kullanacaksınız. Ayrıca DefaultAzureCredential
ve kullanacaksınız. Uygulamayı bir geliştirme ortamında yerel olarak test etmek için aşağıdaki adımları uygulamanız gerekir.
- Bir uygulamayı Microsoft Entra Id'ye kaydedin.
- Uygulamayı
Service Bus Data Owner
role ekleyin. AZURE-CLIENT-ID
, ,AZURE-TENANT-ID
VEAZURE-CLIENT-SECRET
ortam değişkenlerini ayarlayın. Yönergeler için bu makaleye bakın.
Service Bus yerleşik rollerinin listesi için bkz . Service Bus için Azure yerleşik rolleri.
Ad alanı oluşturma
İlk adım bir ad alanı oluşturmak ve bu ad alanı için Paylaşılan Erişim İmzası (SAS) anahtarı almaktır. Ad alanı, Service Bus tarafından kullanıma sunulan her uygulama için bir uygulama sınırı sağlar. Bir ad alanı oluşturulduğunda sistem tarafından bir SAS anahtarı oluşturulur. Ad alanı adı ve SAS anahtarı birleşimi ile Service Bus hizmetinin bir uygulamaya erişim kimliğini doğrulayan kimlik bilgisi sağlanır.
Azure portalında bir ad alanı oluşturma
Azure'da Service Bus mesajlaşma varlıklarını kullanmaya başlamak için öncelikle Azure'da benzersiz olan bir ad alanı oluşturmanız gerekir. Ad alanı, uygulamanızdaki Service Bus kaynakları (kuyruklar, konular vb.) için bir kapsam kapsayıcısı sağlar.
Ad alanı oluşturmak için:
Azure Portal’ında oturum açın.
Tüm hizmetler sayfasına gidin.
Sol gezinti çubuğunda, kategoriler listesinden Tümleştirme'yi seçin, fareyi Service Bus'ın üzerine getirin ve ardından Service Bus kutucuğundaki düğmeyi seçin+.
Ad alanı oluştur sayfasının Temel bilgiler etiketinde şu adımları izleyin:
Abonelik için ad alanının oluşturulacağı bir Azure aboneliği seçin.
Kaynak grubu için, ad alanının yaşayacağı mevcut bir kaynak grubunu seçin veya yeni bir tane oluşturun.
Ad alanı için bir ad girin. Ad alanı adı aşağıdaki adlandırma kurallarına uymalıdır:
- 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ı, kısa çizgi "-" içerebilir.
- Ad bir harfle başlamalı ve bir harf veya numarayla bitmelidir.
- Ad "-sb" veya "-mgmt" ile bitmiyor.
Konum için ad alanınızın barındırılacağı 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.
Önemli
Konuları ve abonelikleri kullanmak istiyorsanız Standart veya Premium'u seçin. Konular/abonelikler Temel fiyatlandırma katmanında desteklenmez.
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.
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.
Ad alanına bağlantı dizesi alma (Azure portalı)
Yeni bir ad alanı oluşturmak otomatik olarak birincil ve ikincil anahtarlarla ilk Paylaşılan Erişim İmzası (SAS) ilkesini ve her birinin ad alanının tüm yönleri üzerinde tam denetim sağlayan birincil ve ikincil bağlantı dizesi oluşturur. Normal gönderenler ve alıcılar için daha kısıtlı haklara sahip kurallar oluşturma hakkında bilgi için bkz . Service Bus kimlik doğrulaması ve yetkilendirmesi .
İstemci, Service Bus ad alanına bağlanmak için bağlantı dizesi kullanabilir. Ad alanınızın birincil bağlantı dizesi kopyalamak için şu adımları izleyin:
Service Bus Ad Alanı sayfasında soldaki menüden Paylaşılan erişim ilkeleri'ni seçin.
Paylaşılan erişim ilkeleri sayfasında RootManageSharedAccessKey'i seçin.
İlke: RootManageSharedAccessKey penceresinde Birincil Bağlan Ion Dizesi'nin yanındaki kopyala düğmesini seçerek bağlantı dizesi daha sonra kullanmak üzere panonuza kopyalayın. Bu değeri Not Defteri veya başka bir geçici konuma yapıştırın.
Birincil anahtar, ikincil anahtar, birincil bağlantı dizesi ve ikincil bağlantı dizesi kopyalamak için bu sayfayı kullanabilirsiniz.
Web rolü oluşturma
Bu bölümde, uygulamanızın ön ucunu derleyin. Öncelikle, uygulamanızda görüntülenecek sayfaları oluşturursunuz. Daha sonra, Service Bus kuyruğuna öğe gönderen ve kuyruk hakkındaki durum bilgilerini gösteren kodu ekleyin.
Proje oluşturma
Yönetici ayrıcalıklarını kullanarak Visual Studio'yu başlatın: Visual Studio program simgesine sağ tıklayın ve yönetici olarak çalıştır'ı seçin. Bu makalenin devamında açıklanan Azure İşlem Öykünücüsü, Visual Studio'nun yönetici ayrıcalıklarıyla başlatılmasını gerektirir.
Visual Studio’da, Dosya menüsünden Yeni’yi ve ardından Proje’yi seçin.
Şablonlar sayfasında şu adımları izleyin:
Programlama dili için C# seçeneğini belirleyin.
Proje türü için Bulut'a tıklayın.
Azure Bulut Hizmeti'ne tıklayın.
İleri'yi seçin.
Projeyi MultiTierApp olarak adlandırın, proje için konum seçin ve ardından Oluştur'u seçin.
Roller sayfasında ASP.NET Web Rolü'ne çift tıklayın ve Tamam'ı seçin.
Azure Bulut Hizmeti çözümü altında WebRole1'in üzerine gelin, kalem simgesini seçin ve web rolünü FrontendWebRole olarak yeniden adlandırın. Ardından Tamam'ı seçin. ("Frontend" öğesini "FrontEnd" olarak değil de küçük 'e' ile yazdığınızdan emin olun.)
Yeni ASP.NET Web Uygulaması oluştur iletişim kutusunda MVC'yi ve ardından Oluştur'u seçin.
Çözüm Gezgini FrontendWebRole projesinde Başvurular'a sağ tıklayıp NuGet Paketlerini Yönet'i seçin.
Gözat sekmesini seçin, ardından Azure.Messaging.ServiceBus araması yapın. Azure.Messaging.ServiceBus paketini seçin, Yükle'yi seçin ve kullanım koşullarını kabul edin.
Gerekli istemci derlemelerine başvuru oluşturulduğunu ve bazı yeni kod dosyaları eklendiğini unutmayın.
NuGet paketini projeye eklemek
Azure.Identity
için aynı adımları izleyin.Çözüm Gezgini'da FronendWebRole'yi genişletin, Modeller'e sağ tıklayın ve Ekle'yi ve ardından Sınıf'ı seçin. Ad kutusuna OnlineOrder.cs yazın: Ardından Ekle'yi seçin.
Web rolünüz için kod yazma
Bu bölümde, uygulamanızın görüntülediği çeşitli sayfalar oluşturursunuz.
Visual Studio'daki OnlineOrder.cs dosyasında var olan ad alanı tanımını şu kod ile değiştirin:
namespace FrontendWebRole.Models { public class OnlineOrder { public string Customer { get; set; } public string Product { get; set; } } }
Çözüm Gezgini'nde Controllers\HomeController.cs öğesine çift tıklayın. Service Bus hizmetinin yanı sıra az önce oluşturduğunuz modele yönelik ad alanlarını da içermesi için dosyanın başına aşağıdaki using deyimlerini ekleyin.
using FrontendWebRole.Models; using Azure.Messaging.ServiceBus;
Ayrıca, Visual Studio'daki HomeController.cs dosyasında var olan ad alanı tanımını da aşağıdaki kod ile değiştirin. Bu kod, öğelerin kuyruğa gönderilme işleminin ele alınmasına yönelik yöntemleri içerir.
namespace FrontendWebRole.Controllers { public class HomeController : Controller { public ActionResult Index() { // Simply redirect to Submit, since Submit will serve as the // front page of this application. return RedirectToAction("Submit"); } public ActionResult About() { return View(); } // GET: /Home/Submit. // Controller method for a view you will create for the submission // form. public ActionResult Submit() { // Will put code for displaying queue message count here. return View(); } // POST: /Home/Submit. // Controller method for handling submissions from the submission // form. [HttpPost] // Attribute to help prevent cross-site scripting attacks and // cross-site request forgery. [ValidateAntiForgeryToken] public ActionResult Submit(OnlineOrder order) { if (ModelState.IsValid) { // Will put code for submitting to queue here. return RedirectToAction("Submit"); } else { return View(order); } } } }
Şu ana kadarki çalışmanızın doğruluğunu test etmek için Derle menüsünden Çözüm Derle'yi seçin.
Şimdi daha önceden oluşturduğunuz
Submit()
yöntemi görünümünü oluşturun. HomeController.cs dosyasında yöntemineSubmit()
(parametresiz aşırı yüklemeSubmit()
) sağ tıklayın ve görünüm ekle'yi seçin.Yeni İskeleli Öğe Ekle iletişim kutusunda Ekle'yi seçin.
Görünüm Ekle iletişim kutusunda şu adımları uygulayın:
Şablon listesinde Oluştur seçeneğini belirleyin.
Model sınıfı listesinde OnlineOrder sınıfını seçin.
Ekle'yi seçin.
Şimdi, uygulamanızın görüntülenen adını değiştirin. Çözüm Gezgini,Views\Shared\_Layout.cshtml dosyasına çift tıklayarak dosyayı Visual Studio düzenleyicisinde açın.
My ASP.NET Application uygulamasının tüm örneklerini Northwind Traders Products olarak değiştirin.
Home, About ve Contact bağlantılarını kaldırın. Vurgulanmış kodu silme:
Son olarak, gönderim sayfasını kuyruk hakkındaki bazı bilgileri içerecek şekilde değiştirin. Çözüm Gezgini'nde, Views\Home\Submit.cshtml dosyasına çift tıklayarak dosyayı Visual Studio düzenleyicisinde açın.
<h2>Submit</h2>
öğesinden sonra aşağıdaki satırı ekleyin.ViewBag.MessageCount
, şimdilik boştur. Daha sonra dolduracaksınız.<p>Current number of orders in queue waiting to be processed: @ViewBag.MessageCount</p>
Şu anda kullanıcı arabiriminizi uyguladınız. Uygulamanızı çalıştırmak ve istediğiniz gibi göründüğünü doğrulamak için F5'e basabilirsiniz.
Service Bus kuyruğuna öğe göndermek için kod yazma
Şimdi, öğeleri kuyruğa göndermek için bir kod ekleyin. İlk olarak, Service Bus kuyruğunuzun bağlantı bilgilerini içeren bir sınıf oluşturun. Ardından, bağlantınızı Global.aspx.cs üzerinden başlatın. Son olarak, öğeleri gerçekten Service Bus kuyruğuna göndermek için daha önce HomeController.cs dosyasında oluşturduğunuz gönderme kodunu güncelleştirin.
Çözüm Gezgini'nde, FrontendWebRole projesine sağ tıklayın (role değil, projeye tıklayın). Ekle'yi ve ardından Sınıf'ı seçin.
Sınıfı QueueConnector.cs olarak adlandırın. Sınıfı oluşturmak için Ekle'yi seçin.
Şimdi, bağlantı bilgilerini yalıtan ve Service Bus kuyruğuna bağlantıyı başlatan kodu ekleyin. QueueConnector.cs öğesinin tüm içeriğini aşağıdaki kodla değiştirin ve
your Service Bus namespace
öğesi (ad alanınızın adı) ile daha önce Azure portalda elde ettiğiniz birincil anahtarınız olanyourKey
öğesi için değerleri girin.using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Threading.Tasks; using Azure.Messaging.ServiceBus; using Azure.Messaging.ServiceBus.Administration; namespace FrontendWebRole { public static class QueueConnector { // object to send messages to a Service Bus queue internal static ServiceBusSender SBSender; // object to create a queue and get runtime properties (like message count) of queue internal static ServiceBusAdministrationClient SBAdminClient; // Fully qualified Service Bus namespace private const string FullyQualifiedNamespace = "<SERVICE BUS NAMESPACE NAME>.servicebus.windows.net"; // The name of your queue. internal const string QueueName = "OrdersQueue"; public static async Task Initialize() { // Create a Service Bus client that you can use to send or receive messages ServiceBusClient SBClient = new ServiceBusClient(FullyQualifiedNamespace, new DefaultAzureCredential()); // Create a Service Bus admin client to create queue if it doesn't exist or to get message count SBAdminClient = new ServiceBusAdministrationClient(FullyQualifiedNamespace, new DefaultAzureCredential()); // create the OrdersQueue if it doesn't exist already if (!(await SBAdminClient.QueueExistsAsync(QueueName))) { await SBAdminClient.CreateQueueAsync(QueueName); } // create a sender for the queue SBSender = SBClient.CreateSender(QueueName); } } }
Şimdi Başlat yönteminizin çağrıldığından emin olun. Çözüm Gezgini'nde Global.asax\Global.asax.cs öğesine çift tıklayın.
Application_Start yönteminin sonuna aşağıdaki kod satırını ekleyin.
FrontendWebRole.QueueConnector.Initialize().Wait();
Son olarak, öğeleri kuyruğa göndermek için daha önce oluşturduğunuz web kodunu güncelleştirin. Çözüm Gezgini'nde Controllers\HomeController.cs öğesine çift tıklayın.
Kuyrukta bulunan ileti sayısını alması için
Submit()
yöntemini (parametre almayan aşırı yük) aşağıdaki şekilde güncelleştirin.public ActionResult Submit() { QueueRuntimeProperties properties = QueueConnector.adminClient.GetQueueRuntimePropertiesAsync(QueueConnector.queueName).Result; ViewBag.MessageCount = properties.ActiveMessageCount; return View(); }
Kuyruğa ilişkin sipariş bilgilerini alması için
Submit(OnlineOrder order)
yöntemini (bir parametre alan aşırı yük) aşağıdaki şekilde güncelleştirin.public ActionResult Submit(OnlineOrder order) { if (ModelState.IsValid) { // create a message var message = new ServiceBusMessage(new BinaryData(order)); // send the message to the queue QueueConnector.sbSender.SendMessageAsync(message); return RedirectToAction("Submit"); } else { return View(order); } }
Şimdi uygulamayı tekrar çalıştırabilirsiniz. Siz her sipariş gönderdiğinizde ileti sayısı da artar.
Çalışan rolü oluşturma
Şimdi sipariş gönderimlerini işleyen çalışan rolünü oluşturacaksınız. Bu örnekte, Service Bus Kuyruğu İçeren Çalışan Rolü Visual Studio proje şablonu kullanılır. Gerekli kimlik bilgilerini zaten portaldan almıştınız.
Visual Studio'yu Azure hesabınıza bağladığınızdan emin olun.
Visual Studio'da bulunan Çözüm Gezgini'ndeki MultiTierApp projesi kısmında Roller'e çift tıklayın.
Ekle'yi ve ardından Yeni Çalışan Rolü Projesi'ni seçin. Yeni Çalışan Rolü Projesi iletişim kutusu görünür.
Yeni Rol Projesi Ekle iletişim kutusunda Çalışan Rolü'ne tıklayın. Eski Service Bus SDK'sını kullanan bir kod oluşturduğundan Service Bus Kuyruğu ile Çalışan Rolü'ni seçmeyin.
Ad kutusunda projeyi OrderProcessingRole olarak adlandırın. Ardından Ekle'yi seçin.
Çözüm Gezgini'da OrderProcessingRole projesine sağ tıklayın ve NuGet Paketlerini Yönet'i seçin.
Gözat sekmesini seçin, ardından Azure.Messaging.ServiceBus araması yapın. Azure.Messaging.ServiceBus paketini seçin, Yükle'yi seçin ve kullanım koşullarını kabul edin.
NuGet paketini projeye eklemek
Azure.Identity
için aynı adımları izleyin.Kuyruktan işlediğiniz siparişleri temsil etmesi için OnlineOrder sınıfı oluşturun. Önceden oluşturduğunuz bir sınıfı yeniden kullanabilirsiniz. Çözüm Gezgini'nde, OrderProcessingRole sınıfına sağ tıklayın (rol simgesine değil, sınıf simgesine sağ tıklayın). Ekle'yi ve ardından Mevcut Öğe'yi seçin.
FrontendWebRole\Models alt klasörüne gözatın ve ardından bu projeye eklemek için OnlineOrder.cs sınıfına çift tıklayın.
OrderProcessingRole projesindeki WorkerRole.cs dosyasına aşağıdaki
using
deyimi ekleyin.using FrontendWebRole.Models; using Azure.Messaging.ServiceBus; using Azure.Messaging.ServiceBus.Administration;
WorkerRole.cs aşağıdaki özellikleri ekleyin.
Önemli
Önkoşulların bir parçası olarak not ettiğiniz ad alanı için bağlantı dizesi kullanın.
// Fully qualified Service Bus namespace private const string FullyQualifiedNamespace = "<SERVICE BUS NAMESPACE NAME>.servicebus.windows.net"; // The name of your queue. private const string QueueName = "OrdersQueue"; // Service Bus Receiver object to receive messages message the specific queue private ServiceBusReceiver SBReceiver;
yöntemini güncelleştirerek
OnStart
birServiceBusClient
nesne oluşturun ve ardından öğesindenOrdersQueue
ileti alacak birServiceBusReceiver
nesne oluşturun.public override bool OnStart() { // Create a Service Bus client that you can use to send or receive messages ServiceBusClient SBClient = new ServiceBusClient(FullyQualifiedNamespace, new DefaultAzureCredential()); CreateQueue(QueueName).Wait(); // create a receiver that we can use to receive the message SBReceiver = SBClient.CreateReceiver(QueueName); return base.OnStart(); } private async Task CreateQueue(string queueName) { // Create a Service Bus admin client to create queue if it doesn't exist or to get message count ServiceBusAdministrationClient SBAdminClient = new ServiceBusAdministrationClient(FullyQualifiedNamespace, new DefaultAzureCredential()); // create the OrdersQueue if it doesn't exist already if (!(await SBAdminClient.QueueExistsAsync(queueName))) { await SBAdminClient.CreateQueueAsync(queueName); } }
RunAsync
yöntemini, iletileri alacak kodu içerecek şekilde güncelleştirin.private async Task RunAsync(CancellationToken cancellationToken) { // TODO: Replace the following with your own logic. while (!cancellationToken.IsCancellationRequested) { // receive message from the queue ServiceBusReceivedMessage receivedMessage = await SBReceiver.ReceiveMessageAsync(); if (receivedMessage != null) { Trace.WriteLine("Processing", receivedMessage.SequenceNumber.ToString()); // view the message as an OnlineOrder OnlineOrder order = receivedMessage.Body.ToObjectFromJson<OnlineOrder>(); Trace.WriteLine(order.Customer + ": " + order.Product, "ProcessingMessage"); // complete message so that it's removed from the queue await SBReceiver.CompleteMessageAsync(receivedMessage); } } }
Uygulamayı tamamladınız. Çözüm Gezgini'nde MultiTierApp projesine sağ tıklayarak uygulamanın tamamını test edebilirsiniz. Başlangıç Projesi Olarak Ayarla'yı seçip F5'e basın. Çalışan rolü kuyruktaki öğeleri işlediği ve tamamlandı olarak işaretlediğinden ileti sayısı artmıyor. Azure İşlem Öykünücüsü kullanıcı arabiriminde görüntüleyerek çalışan rolünüzün izleme çıktısını görebilirsiniz. Bu işlemi, görev çubuğunuzdaki bildirim alanında bulunan öykünücü simgesine sağ tıklayıp İşlem Öykünücüsü Kullanıcı Arabirimini Göster'i seçerek gerçekleştirebilirsiniz.
Sonraki adımlar
Service Bus hakkında daha fazla bilgi edinmek için şu kaynaklara bakın: