Ayrıştırılmış Mesajlaşma için Azure Service Bus
Kuyruklar ve konular içeren bir Service Bus ad alanı oluşturun, bir uygulamadan mesaj gönderip alın ve başarısız mesajları işlemek için ölü mektup kuyruklarını yapılandırın.
Ayrıştırılmış Mesajlaşma için Azure Service Bus, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
İletilerle Neden Gevşek Bağlantı Kurulur?
Sıkı bağlı mimarilerde hizmetler birbirini eşzamanlı olarak çağırır; alt hizmet yavaşsa veya çalışmıyorsa çağrıyı yapan hizmet de engellenir ya da başarısız olur. İleti kuyrukları, üreticiler ile tüketiciler arasında eşzamansız bir arabellek oluşturur. Böylece yavaş bir alt hizmet, başarısızlıkları üst hizmetlere zincirleme olarak taşımaz. Azure Service Bus, garantili teslim, sıralama ve ölü harfe ayırma özellikleriyle birlikte kuyruklar (noktadan noktaya) ve konular (yayınlama-abone olma) sağlayan, kurumsal düzeyde bir ileti hizmetidir.
Service Bus Ad Alanları ve Katmanları
Bir Service Bus ad alanı, tüm ileti varlıklarını (kuyruklar ve konular) barındıran en üst düzey kapsayıcıdır ve FQDN uç noktasını (ör. myns.servicebus.windows.net) sağlar. Ad alanları üç katmana ayrılır: Basic (yalnızca kuyruklar, konu yok, en fazla 256 KB ileti boyutu), Standard (kuyruklar + konular, en fazla 256 KB) ve Premium (kuyruklar + konular, 100 MB'a kadar iletiler, ayrılmış kapasite, VNet tümleştirmesi ve coğrafi olağanüstü durum kurtarma). SLA destekli performansa ihtiyaç duyan üretim iş yükleri için Premium gereklidir.
# Create a Service Bus namespace (Standard tier)
az servicebus namespace create \
--resource-group myRG \
--name myservicebusns \
--location eastus \
--sku StandardKuyruklar: Noktadan Noktaya İletişim
Bir Service Bus kuyruğu, iletileri FIFO sırasına göre depolar ve her iletiyi tam olarak bir tüketiciye teslim eder. Tüketiciler iletileri peek-lock mekanizmasını kullanarak alır: ileti işlenirken geçici olarak diğer tüketicilerden gizlenir. Tüketici işlemi başarıyla tamamlarsa kuyruktan kaldırmak için CompleteMessage() çağrısını yapar. İşleme başarısız olursa tüketici AbandonMessage() çağrısını yapar ve ileti başka bir deneme için yeniden görünür hâle gelir. Yapılandırılabilir sayıdaki teslim denemesinden sonra işlenemeyen iletiler ölü harf kuyruğuna (DLQ) taşınır.
# Create a Service Bus queue with DLQ enabled
az servicebus queue create \
--resource-group myRG \
--namespace-name myservicebusns \
--name orders \
--max-delivery-count 5 \
--default-message-time-to-live P7D \
--dead-lettering-on-message-expiration trueKonular ve Abonelikler
Konular, yayınlama-abone olma modelini uygular: bir üretici bir konuya ileti gönderir ve o konudaki istediğiniz sayıda aboneliğin her biri iletinin bir kopyasını alır. Aboneliklerde, iletilerin yalnızca bir alt kümesini almak için filtreler (SQL veya bağıntı ifadeleri) bulunabilir; örneğin HighPriority aboneliği yalnızca Priority özelliğinin High değerine eşit olduğu iletileri alır. Bu sayede tek bir konu, her biri olayların farklı bir alt kümesiyle ilgilenen birçok alt hizmete iletileri dağıtabilir.
# Create a topic and two subscriptions with filters
az servicebus topic create \
--resource-group myRG \
--namespace-name myservicebusns \
--name order-events
az servicebus topic subscription create \
--resource-group myRG \
--namespace-name myservicebusns \
--topic-name order-events \
--name high-priority-sub
az servicebus topic subscription rule create \
--resource-group myRG \
--namespace-name myservicebusns \
--topic-name order-events \
--subscription-name high-priority-sub \
--name PriorityFilter \
--filter-sql-expression 'Priority = '"'"'High'"'"''İleti Gönderme ve Alma
Azure Service Bus SDK, gönderme ve alma işlemleri için bir ServiceBusClient sağlar. Göndermek için bir ServiceBusSender oluşturup SendMessageAsync() çağrısını yapın. Almak için bir ServiceBusReceiver oluşturup ReceiveMessageAsync() çağrısını yapın (çekme tabanlı) veya sürekli itme tabanlı işleme için olay işleyicisi bulunan bir ServiceBusProcessor kullanın. Service Bus SDK ile DefaultAzureCredential kullanmak, bağlantı dizelerine duyulan ihtiyacı ortadan kaldırarak parolasız modelin korunmasını sağlar.
# Python: Send a message to a Service Bus queue
from azure.servicebus import ServiceBusClient, ServiceBusMessage
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
client = ServiceBusClient(
fully_qualified_namespace='myservicebusns.servicebus.windows.net',
credential=credential
)
with client.get_queue_sender(queue_name='orders') as sender:
msg = ServiceBusMessage('{ 'orderId': '12345', 'amount': 99.99 }')
sender.send_messages(msg)
print('Message sent')Ölü Harf Kuyruğu
Ölü harf kuyruğu (DLQ), teslim edilemeyen iletileri otomatik olarak alan bir alt kuyruktur. İletiler şu durumlarda ölü harfe ayrılır: en yüksek teslim sayısını aştıklarında, süreleri dolduğunda (TTL süresi geçtiğinde) veya bir konu aboneliği filtresi değerlendirmesinden geçemediklerinde. DLQ'yu izlemek çok önemlidir; büyüyen bir DLQ, sistematik bir işleme hatasına işaret eder. DLQ iletileri, özgün içeriklerinin yanı sıra temel nedeni tanılamaya yardımcı olmak için Service Bus tarafından eklenen ölü harfe ayırma nedeni ve açıklama özelliklerini de korur.
# Read messages from the dead-letter queue
az servicebus queue show \
--resource-group myRG \
--namespace-name myservicebusns \
--name 'orders/$DeadLetterQueue' \
--query 'countDetails.deadLetterMessageCount'Sıralama için İleti Oturumları
Oturumlar, aynı mantıksal gruba ait iletilerin kesin olarak sıralanmasını sağlar. Her iletiye bir SessionId (ör. müşteri kimliği veya sipariş kimliği) etiketi eklenir ve oturum farkındalığına sahip bir tüketici, belirli bir oturuma ait tüm iletileri FIFO sırasına göre ve yalnızca kendisi alır. Oturumlar, adımların sırayla yürütülmesi gereken iş akışları için gereklidir; örneğin belirli bir siparişe ait tüm olayların işlenmesi: Created → PaymentReceived → Shipped → Delivered. Oturumlar, kuyruk veya abonelik oluşturulurken etkinleştirilir.
Service Bus ve Event Grid ile Event Hubs Karşılaştırması
Bu üç Azure ileti hizmeti sıklıkla birbiriyle karıştırılır: Service Bus, sıralama, oturumlar ve DLQ özelliklerine sahip güvenilir, işlemsel kurumsal iletişim içindir; sipariş işleme, finansal işlemler ve iş akışı düzenleme için uygundur. Event Grid, bir blob'un yüklenmesi veya bir VM'nin silinmesi gibi tepkisel olay yönlendirme işlemleri içindir; birden çok işleyiciye dağıtım sağlar ancak sıralama veya yeniden oynatma özelliği sunmaz. Event Hubs, yeniden oynatma özelliğine sahip yüksek hacimli olay akışı (saniyede milyonlarca olay) içindir; IoT telemetrisi ve günlük alımı için uygundur. Seçiminizi sıralama, aktarım hızı ve dayanıklılık gereksinimlerine göre yapın.
Coğrafi Olağanüstü Durum Kurtarma
Service Bus Coğrafi Olağanüstü Durum Kurtarma (Geo-DR), ad alanı meta verilerini (kuyruklar, konular, abonelikler ve erişim ilkeleri) ikincil bir bölgeye çoğaltır. Eşleştirilmiş bölgeler tek bir takma ad ana bilgisayar adını paylaşır; birincil bölge başarısız olursa yük devretme işlemini başlatırsınız ve takma ad ikincil bölgeye çözümlenir. İleti verilerinin (işlemdeki iletilerin) Standard katmanında çoğaltılmadığını unutmayın; iletileri yalnızca Premium katmanının Geo-DR özelliği çoğaltır. Kritik iletişim işlemleri için RTO ve RPO gereksinimlerini karşılamak üzere Premium + Geo-DR kullanın.
Ölçeklendirme ve Bölümlenmiş Varlıklar
Yüksek aktarım hızı gerektiren senaryolarda, oluşturma sırasında kuyruklar ve konular için bölümlemeyi etkinleştirin. Bölümlenmiş varlıklar, aktarım kapasitesini artırmak için dahili olarak birden çok ileti aracısı ve depolama parçası kullanır. Standard katmanında bölümlenmiş varlıkların toplam boyutu en fazla 80 GB olabilir. Her ileti, PartitionKey özelliğine göre bir bölüme yönlendirilir (oturumlar etkinse varsayılan olarak oturum kimliği kullanılır). Bölümleme, oluşturma sırasında verilen tek seferlik bir karardır; mevcut bir kuyruğu bölümleyemezsiniz. Bölümleme karmaşıklığı olmadan en yüksek garantili aktarım hızını elde etmek için Premium katmanını kullanın.
# Create a partitioned queue (Standard tier)
az servicebus queue create \
--resource-group myRG \
--namespace-name myservicebusns \
--name orders-partitioned \
--enable-partitioning trueService Bus Sağlığını İzleme
Azure Monitor ile izlenmesi gereken temel Service Bus ölçümleri şunlardır: Active Messages (kuyruk derinliği; artan derinlik tüketici gecikmesine işaret eder), Dead-lettered Messages (işleme başarısızlıkları), Server Errors ve User Errors (kimlik doğrulama ve kısıtlama sorunları) ile Incoming Requests (genel aktarım hızı). Ölü harf kuyruğu bir eşiği aştığında veya etkin iletiler uzun süre boyunca tüketilmediğinde operasyon ekiplerinin bilgilendirilmesi için ölçüm uyarılarını yapılandırın.
Hızlı Kontrol
Bu dersteki Microsoft Azure Fundamentals (AZ-900) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: Service Bus kuyrukları, peek-lock teslimi ve başarısız iletiler için ölü harf kuyruğuyla noktadan noktaya iletişim sağlar; konular ve abonelikler, filtre kurallarıyla iletileri birden çok tüketiciye dağıtır; oturumlar ise aynı mantıksal gruba ait iletilerin sıralı olarak işlenmesini sağlar. Sırada, modern mikro hizmetleri dağıtmak için Azure Container Apps'i inceleyeceğiz.
Sıkça Sorulan Sorular
“Ayrıştırılmış Mesajlaşma için Azure Service Bus” dersi ücretsiz mi?
Evet — “Ayrıştırılmış Mesajlaşma için Azure Service Bus” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
“Ayrıştırılmış Mesajlaşma için Azure Service Bus” dersinde ne öğreneceğim?
Kuyruklar ve konular içeren bir Service Bus ad alanı oluşturun, bir uygulamadan mesaj gönderip alın ve başarısız mesajları işlemek için ölü mektup kuyruklarını yapılandırın. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Ayrıştırılmış Mesajlaşma için Azure Service Bus” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Parolasız Kimlik Doğrulama için Yönetilen Kimlik
- Ayrıştırılmış Mesajlaşma için Azure Service Bus
- Azure Container Apps
- Uçtan Uca Geliştirici İş Akışı