Azure Service Bus nedir?
Azure Service Bus, ileti kuyrukları ve yayımlama-abone olma konularına sahip tam olarak yönetilen bir kurumsal ileti aracısıdır. Service Bus, uygulamaları ve hizmetleri birbirinden ayırarak aşağıdaki avantajları sağlamak için kullanılır:
- Rakip çalışanlar arasında yük dengeleme işi
- Hizmet ve uygulama sınırları arasında verileri ve denetimi güvenli bir şekilde yönlendirme ve aktarma
- Yüksek düzeyde güvenilirlik gerektiren işlem çalışmalarını koordine etme
Genel bakış
Veriler, farklı uygulamalar ve hizmetler arasında iletiler kullanılarak aktarılır. İleti, meta verilerle donatılmış bir kapsayıcıdır ve veriler içerir. Veriler, aşağıdakiler gibi yaygın biçimlerle kodlanmış yapılandırılmış veriler de dahil olmak üzere her türlü bilgi olabilir: JSON, XML, Apache Avro, Düz Metin.
Yaygın olarak kullanılan bazı mesajlaşma senaryoları:
Mesajlaşma. Satış veya satınalma siparişleri, günlükler veya stok hareketleri gibi iş verilerini aktarabilirsiniz.
Uygulamaları ayırma. Uygulamaların ve hizmetlerin güvenilirliğini ve ölçeklenebilirliğini geliştirin. Üretici ve tüketicinin aynı anda çevrimiçi veya hazır olması gerekmez. Yük , trafik artışlarının bir hizmeti aşmaması için seviyelendirilir .
Yük dengeleme. Birden çok rakip tüketicinin aynı anda bir kuyruktan okumasına izin verin ve her birinin belirli iletilere özel sahipliğini güvenli bir şekilde elde etmelerini sağlayın.
Konular ve abonelikler. Yayımcılar ve aboneler arasında 1:n ilişkilerini etkinleştirerek abonelerin yayımlanan bir ileti akışından belirli iletileri seçmesine olanak tanır.
İşlemler. Tümü atomik işlem kapsamında çeşitli işlemler yapmanıza olanak tanır. Örneğin, aşağıdaki işlemler bir işlem kapsamında yapılabilir.
- Bir kuyruktan ileti alın.
- İşlem sonuçlarını bir veya daha fazla farklı kuyruğa gönderin.
- Giriş iletisini özgün kuyruktan taşıyın.
Sonuçlar, giriş iletisinin başarılı bir şekilde çözümlenmesi de dahil olmak üzere yalnızca başarılı olduktan sonra aşağı akış tüketicileri tarafından görülebilir hale gelir ve yalnızca bir kez işleme semantiğine olanak sağlar. Bu işlem modeli, daha büyük çözüm bağlamında telafi işlemleri deseni için sağlam bir temeldir.
İleti oturumları. Katı ileti sıralama veya ileti erteleme gerektiren iş akışları ve çok aşamalı aktarımlar için yüksek ölçekli koordinasyon uygulayın.
Apache ActiveMQ gibi diğer ileti aracılarını biliyorsanız, Service Bus kavramları sizin bildiklerinize benzer. Service Bus bir hizmet olarak platform (PaaS) teklifi olduğundan, önemli bir fark aşağıdaki eylemler konusunda endişelenmenize gerek olmadığıdır. Azure bu işlerle sizin için ilgilenir.
- Donanım hataları hakkında endişelenme
- İşletim sistemlerini veya ürünleri düzeltme eki uygulama
- Günlükleri yerleştirme ve disk alanını yönetme
- Yedeklemeleri işleme
- Yedek makineye yük devretme
Kavramlar
Bu bölümde Service Bus'ın temel kavramları ele alınmaktadır.
Kuyruklar
İletiler kuyruklara gönderilir ve bunlardan alınır. Kuyruklar, alıcı uygulama bunları almak ve işlemek için kullanılabilir olana kadar iletileri depolar.
Kuyruklardaki iletiler sipariş edilir ve varışta zaman damgası eklenir. Aracı iletiyi kabul ettikten sonra, ad alanı alanlar etkinleştirilmişse, ileti her zaman üç yedekli depolama alanında, kullanılabilirlik alanlarına yayılır. Service Bus, istemci tarafından kabul edildi olarak raporlanana kadar iletileri bellekte veya geçici depolamada tutar.
İletiler çekme modunda teslim edilir, yalnızca istendiğinde ileti teslim edilir. Diğer bazı bulut kuyruklarının meşgul yoklama modelinin aksine, çekme işlemi uzun ömürlü olabilir ve yalnızca bir ileti kullanılabilir olduğunda tamamlanabilir.
Not
Service Bus kuyruklarının Depolama kuyruklarıyla karşılaştırması için bkz . Depolama kuyrukları ve Service Bus kuyrukları - karşılaştırmalı ve karşıt.
Konu başlıkları
İleti göndermek ve almak için konu başlıklarını da kullanabilirsiniz. Kuyruk genellikle noktadan noktaya iletişim için kullanılırken, yayımlama-abone olma senaryolarında konular yararlıdır.
Konular, konuya ekli olan ve diğer durumlarda alıcı tarafındaki kuyruklar gibi çalışan birden çok bağımsız abonelik içerebilir. Bir konu başlığının bir abonesi konu başlığına gönderilen her iletinin bir kopyasını alabilir. Abonelikler, varlıklar olarak adlandırılır. Abonelikler varsayılan olarak dayanıklıdır, ancak süresi dolacak şekilde yapılandırılabilir ve ardından otomatik olarak silinebilir. Java İleti Hizmeti (JMS) API'sini kullanarak Service Bus Premium, bağlantı süresi boyunca var olan geçici abonelikler oluşturmanıza da olanak tanır.
Bir abonelikte kurallar tanımlayabilirsiniz. Abonelik kuralı, iletinin aboneliğe kopyalanması için bir koşul ve ileti meta verilerini değiştirebilen isteğe bağlı bir eylem tanımlamak için bir filtreye sahiptir. Daha fazla bilgi için bkz . Konu filtreleri ve eylemleri. Bu özellik aşağıdaki senaryolarda kullanışlıdır:
- Aboneliğin bir konuya gönderilen tüm iletileri almasını istemezsiniz.
- Abonelikten geçen iletileri ek meta verilerle işaretlemek istiyorsunuz.
Not
Kuyruklar ve konular hakkında daha fazla bilgi için bkz . Service Bus kuyrukları, konuları ve abonelikleri.
Ad alanları
Ad alanı, tüm mesajlaşma bileşenleri (kuyruklar ve konular) için bir kapsayıcıdır. Bir ad alanının bir veya daha fazla kuyruğu ve konusu olabilir ve genellikle bir uygulama kapsayıcısı görevi görür.
Ad alanı, diğer aracıların terminolojisindeki bir sunucuyla karşılaştırılabilir, ancak kavramlar doğrudan eşdeğer değildir. Service Bus ad alanı, onlarca tüm etkin sanal makineden oluşan büyük bir kümenin kendi kapasite dilimidir. İsteğe bağlı olarak üç Azure kullanılabilirlik alanına yayılabilir. Bu nedenle, ileti aracısını muazzam ölçekte çalıştırmanın tüm kullanılabilirlik ve sağlamlık avantajlarını elde edersiniz. Ayrıca, temeldeki karmaşıklıklar konusunda endişelenmenize gerek yoktur. Service Bus sunucusuz mesajlaşmadır.
Gelişmiş özellikler
Service Bus ayrıca daha karmaşık mesajlaşma sorunlarını çözmenizi sağlayan gelişmiş özelliklere de sahiptir. Aşağıdaki bölümlerde bu başlıca özellikler açıklanmaktadır:
İleti oturumları
Service Bus kuyruklarında veya aboneliklerinde iletileri işlemeye yönelik ilk, ilk çıkan (FIFO) garantisini gerçekleştirmek için oturumları kullanın. Oturumlar, istek-yanıt desenlerinin uygulanmasında da kullanılabilir. İstek-yanıt düzeni, gönderen uygulamanın istek göndermesini sağlar ve alıcının gönderen uygulamaya doğru bir şekilde yanıt göndermesi için bir yol sağlar. Daha fazla bilgi için bkz . İleti oturumları.
Otomatik iletme
Otomatik iletme özelliği, bir kuyruğu veya aboneliği aynı ad alanının parçası olan başka bir kuyruğa veya konuya zincirlemenizi sağlar. Otomatik iletme etkinleştirildiğinde, Service Bus, ilk kuyruğa veya aboneliğe (kaynak) yerleştirilen iletileri otomatik olarak kaldırıp ikinci kuyruğa veya aboneliğe (hedef) yerleştirir. Daha fazla bilgi için bkz . Otomatik iletme ile Service Bus varlıklarını zincirleme
Ulaşmayan posta
Service Bus kuyrukları ve konu abonelikleri, teslim edilemeyen ileti kuyruğu (DLQ) olarak adlandırılan ikincil bir alt sıra sağlar. Teslim edilemeyen ileti kuyruğu, hiçbir alıcıya teslim edilemeyen iletileri veya işlenemeyen iletileri barındırıyor. İletileri daha sonra DLQ'dan kaldırabilir ve inceleyebilirsiniz. Bir uygulama, bir işlecin yardımıyla sorunları düzeltebilir ve iletiyi yeniden göndererek hata olduğu gerçeğini günlüğe kaydedebilir ve düzeltici bir eylem gerçekleştirebilir. Daha fazla bilgi için bkz . Service Bus teslim edilemeyen ileti kuyruklarına genel bakış.
Zamanlanmış teslim
gecikmeli işleme için bir kuyruğa veya konuya ileti gönderebilirsiniz. Örneğin, bir işi belirli bir zamanda bir sistem tarafından işlenmek üzere kullanılabilir olacak şekilde zamanlamak. Daha fazla bilgi için bkz . Zamanlanmış iletiler.
İleti erteleme
Bir kuyruk veya abonelik istemcisi işlemeye istekli olduğunu ancak uygulama içindeki özel koşullar nedeniyle şu anda işlemenin mümkün olmadığı bir ileti aldığında, varlık iletinin alınmasını daha sonraki bir noktaya erteleyebilir. İleti kuyrukta veya abonelikte kalır, ancak ayrılmıştır. Daha fazla bilgi için bkz . İleti erteleme.
Hareketler
Bir hareket, iki veya daha fazla işlemi tek bir yürütme kapsamında bir araya toplar. Service Bus, bir hareketin kapsamı içindeki işlemlerin (kuyruk, konu başlığı, abonelik gibi) tek bir mesajlaşma varlığına göre gruplanmasını destekler. Daha fazla bilgi için bkz . Service Bus işlemi işlemeye genel bakış.
Filtreler ve eylemler
Aboneler, bir konu başlığından hangi iletileri almak istediklerini tanımlayabilir. Bu iletiler, bir veya daha fazla adlandırılmış abonelik kuralı biçiminde belirtilir. Her kural, belirli iletileri seçen bir filtre koşulundan oluşur ve isteğe bağlı olarak seçili iletiye ek açıklama ekleyen bir eylem içerir. Her eşleşen kural koşulu için abonelik, her eşleşen kural için farklı açıklama ekleyebileceğiniz iletinin bir kopyasını oluşturur. Daha fazla bilgi için bkz . Konu filtreleri ve eylemleri.
Boşta beklemede otomatik silme
Boşta beklemede otomatik silme, bittiğinde kuyruğun otomatik olarak silindiği bir boşta bekleme süresi belirtmenizi sağlar. Kuyrukta trafik olduğunda aralık sıfırlanır. En düşük süre 5 dakikadır.
Yinelenen öğe algılaması
İstemcinin bir gönderme işleminin sonucu hakkında şüpheye sahip olmasına neden olan bir hata oluşursa, yinelenen algılama, gönderenin aynı iletiyi yeniden göndermesini sağlayarak şüpheyi bu durumlardan çıkarır ve kuyruk veya konu yinelenen kopyaları atar. Daha fazla bilgi için bkz . Yinelenen algılama.
İletileri toplu silme
Azure Service Bus, iletilerin toplu olarak silinmesini destekler. Bu, kuyruklardaki veya aboneliklerdeki iletilerin süresi dolduğunda veya artık ilgili olmadığında temizleme gerektiren senaryolarda kullanışlıdır. Daha fazla bilgi için bkz . Toplu silme.
Güvenlik
Service Bus, Azure kaynakları için Paylaşılan Erişim İmzaları (SAS), Rol Tabanlı Erişim Denetimi (RBAC) (RBAC) ve Yönetilen kimlikler gibi güvenlik protokollerini destekler.
Service Bus, standart Gelişmiş Message Queuing Protokolü (AMQP) 1.0 ve HTTP/REST protokollerini destekler.
Coğrafi olağanüstü durum kurtarma
Azure bölgeleri veya veri merkezleri bir kesinti yaşadığında, Coğrafi olağanüstü durum kurtarma veri işlemenin başka bir bölge veya veri merkezinde devam etmesini olanaklı kılar.
Not
Bu özellikler hakkında daha fazla bilgi için bkz . Azure Service Bus'ın gelişmiş özellikleri.
Standartlar ve protokollerle uyumluluk
Service Bus için birincil kablo protokolü, açık bir ISO/IEC standardı olan Gelişmiş Mesajlaşma Kuyruğa Alma Protokolü (AMQP) 1.0'dır. Müşterilerin Service Bus ve ActiveMQ veya RabbitMQ gibi şirket içi aracılara karşı çalışan uygulamalar yazmasına olanak tanır. AMQP protokol kılavuzu, böyle bir soyutlama oluşturmak istemeniz durumunda ayrıntılı bilgiler sağlar.
Service Bus Premium , Java/Jakarta EE Java İleti Hizmeti (JMS) 2.0 API'siyle tamamen uyumludur. Service Bus Standard, kuyruklara odaklanan JMS 1.1 alt kümesini destekler. JMS, ileti aracıları için yaygın bir soyutlamadır ve popüler Spring çerçevesi de dahil olmak üzere birçok uygulama ve çerçeveyle tümleşir. Diğer aracılardan Azure Service Bus'a geçmek için kuyrukların ve konuların topolojisini yeniden oluşturmanız ve istemci sağlayıcısı bağımlılıklarını ve yapılandırmasını değiştirmeniz yeterlidir. Bir örnek için bkz . ActiveMQ geçiş kılavuzu.
İstemci kitaplıkları
Tam olarak desteklenen Service Bus istemci kitaplıkları Azure SDK aracılığıyla kullanılabilir.
- .NET için Azure Service Bus
- SDK'nın üzerinde oluşturulmuş üst düzey soyutlamalar sağlayan üçüncü taraf çerçeveler NServiceBus ve MassTransit'tir.
- Java için Azure Service Bus kitaplıkları
- Java JMS 2.0 için Azure Service Bus sağlayıcısı
- JavaScript ve TypeScript için Azure Service Bus modülleri
- Python için Azure Service Bus kitaplıkları
Azure Service Bus'ın birincil protokolü AMQP 1.0'dır ve herhangi bir AMQP 1.0 uyumlu protokol istemcisinden kullanılabilir. Bazı açık kaynak AMQP istemcilerinde Service Bus birlikte çalışabilirliğini açıkça gösteren örnekler bulunur. Service Bus özelliklerini DOĞRUDAN AMQP 1.0 istemcileriyle nasıl kullanacağınızı anlamak için AMQP 1.0 protokol kılavuzunu gözden geçirin.
Dil | Kitaplık |
---|---|
Java | Apache Qpid Proton-J |
C/C++ | Azure uAMQP C, Apache Qpid Proton-C |
Python | Python için Azure uAMQP, Apache Qpid Proton Python) |
PHP | PHP için Azure uAMQP |
Ruby | Apache Qpid Proton Ruby |
Go | Azure Go AMQP, Apache Qpid Proton Go |
C#/F#/VB | AMQP .NET Lite, Apache NMS AMQP |
JavaScript/Node | Rhea |
Tümleştirme
Service Bus, birçok Microsoft ve Azure hizmetiyle tam olarak tümleştirilir, örneğin:
Sonraki adımlar
Service Bus mesajlaşmasını kullanmaya başlamak için aşağıdaki makalelere bakın:
- Service Bus kuyrukları, konu başlıkları ve abonelikleri
- Hızlı Başlangıçlar: .NET, Java, JMS veya NServiceBus
- Service Bus fiyatlandırması.
- Premium Mesajlaşma.