Azure Service Bus nedir?
Azure Service Bus, ileti kuyrukları ve yayımlama-abone olma konularına (ad alanı içinde) sahip tam olarak yönetilen bir kurumsal ileti aracısıdır. Service Bus uygulamaları ve hizmetleri diğer uygulamalardan ayrıp aşağıdaki avantajları sağlamak için kullanılır:
- Rakip çalışanlar arasında yük dengeleme çalışması
- Hizmet ve uygulama sınırları arasında güvenli yönlendirme ve veri aktarma ve denetim
- Yüksek düzeyde güvenilirlik gerektiren işlemsel çalışmaları koordine eder
Not
Azure mesajlaşma hizmetlerinin karşılaştırması için bkz. Azure mesajlaşma hizmetleri arasında seçim Event Grid, Event Hubs ve Service Bus.
Genel Bakış
Veriler, farklı uygulamalar ve hizmetler arasında iletiler kullanılarak aktarılır. İleti, meta verilerle dekore edilmiş ve veri içeren bir kapsayıcıdır. 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ın alma siparişleri, günlükler veya envanter taşımaları gibi iş verilerini aktarma.
Uygulamaları ayraçlı olarak ayranı. Uygulama ve hizmetlerin güvenilirliğini ve ölçeklenebilirliğini geliştirme. Üretici ve tüketicinin aynı anda çevrimiçi veya hazır olması gerek değildir. Yük, ani trafik artışları bir hizmete aşırı yüklenmez.
Yük dengeleme. Birden çok rakip tüketicinin aynı anda bir kuyruktan okumasına izin ver, her biri belirli iletilere özel sahiplik elde eder.
Konu başlıkları ve abonelikler. Etkinleştir 1:n yayımcılar veaboneler arasındaki ilişkiler, abonelerin yayımlanan ileti akışından belirli iletileri seçmelerine olanak sağlar.
İşlemler. Tüm işlemleri atomik bir işlem kapsamında çeşitli işlemlere izin verir. Örneğin, bir işlem kapsamında aşağıdaki işlemler yapılabilir.
- Bir kuyruktan ileti alın.
- İşleme sonuçlarını bir veya daha fazla farklı kuyruğa iletin.
- Giriş iletiyi özgün kuyruktan taşıma.
Sonuçlar, yalnızca bir kez işleme semantiğine olanak sağlayan giriş iletisi başarıyla kapatılacak şekilde başarılı olduktan sonra aşağı akış tüketicilerine görünür hale gelir. 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ının ve çok katlı aktarımların yüksek ölçekli koordinasyonu uygulama.
Apache ActiveMQ gibi diğer ileti aracıları hakkında bilgi sahibiy Service Bus kavramlar, sahip olduğunuz kavramlara benzer. Bu Service Bus bir hizmet olarak platform (PaaS) teklifi olduğu için önemli bir fark, aşağıdaki eylemler hakkında endişelenmeniz gerekmamadır. Azure bu işleri sizin için sizin için yapandır.
- 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 teslim
Kavramlar
Bu bölümde, temel kavramlar ve Service Bus.
Kuyruklar
İletiler kuyruklara gönderilir ve bunlardan alınır. Kuyruklar, iletileri alan uygulama al ve işleyene kadar depolar.

Kuyruklarda yer alan iletiler, varış sırasında sıralandı ve zaman damgasına alındı. Aracı tarafından kabul edildiktan sonra, ad alanı etkinleştirilmişse ileti her zaman üç yedekli depolamada sağlam bir şekilde tutularak kullanılabilirlik alanlarına yayılır. Service Bus, istemciye kabul edildikten sonra iletileri hiçbir zaman bellekte veya geçici depolamada bırakmayacak.
İletiler çekme modunda teslim edilir, yalnızca istek üzerine iletiler teslim edilir. Diğer bazı bulut kuyruklarının meşgul yoklama modelinden farklı olarak, çekme işlemi uzun süreli olabilir ve yalnızca bir ileti kullanılabilir olduktan sonra tamamlanır.
Not
Kuyrukların Service Bus karşılaştırması Depolama için bkz. Depolama kuyrukları ve Service Bus karşıtlığı.
Konu başlıkları
İleti göndermek ve almak için konu başlıklarını da kullanabilirsiniz. Bir kuyruk genellikle noktadan noktaya iletişim için kullanılır, buna karşın konu başlıkları yayımlama/abone olma senaryolarında yararlıdır.

Konu başlıklarında, konuya ek olarak tam olarak alıcı tarafındaki kuyruklar gibi çalışabilecek birden çok bağımsız abonelik olabilir. Bir konu başlığının bir abonesi konu başlığına gönderilen her iletinin bir kopyasını alabilir. Abonelikler adlandırılmış varlıklardır. Abonelikler varsayılan olarak dayanıklıdır, ancak süresi dolarak otomatik olarak silinecek şekilde yalıtılır. Java Message Service (JMS) API'si Service Bus Premium bağlantı süresince var olan geçici abonelikler oluşturmanıza da olanak sağlar.
Bir abonelikte kurallar tanımlayabilirsiniz. Abonelik kuralının aboneliğe kopyalanan iletinin koşullarını ve ileti meta verilerini değiştiren isteğe bağlı bir eylemi tanımlamak için bir filtresi vardır. Daha fazla bilgi için bkz. Konu filtreleri ve eylemleri. Bu özellik aşağıdaki senaryolarda yararlıdır:
- Bir aboneliğe konu başlığına gönderilen tüm iletileri almak istemiyorsanız.
- İletileri abonelikten geçen ek meta verilerle işaretlemek istediğiniz.
Not
Kuyruklar ve konular hakkında daha fazla bilgi için bkz. Service Bus, konu başlıkları ve abonelikler.
Ad alanları
Ad alanı, tüm mesajlaşma bileşenleri (kuyruklar ve konular) için bir kapsayıcıdır. Birden çok kuyruk ve konu tek bir ad alanı içinde olabilir ve ad alanları genellikle uygulama kapsayıcıları olarak görev verir.
Ad alanı, diğer aracıların terminolojisinde bir sunucuyla karşılaştırabilirsiniz, ancak kavramlar doğrudan eşdeğer değildir. Bir Service Bus alanı, onlarca etkin sanal makineden oluşur büyük bir kümenin kendi kapasite dilimidir. İsteğe bağlı olarak üç Azure kullanılabilirlik alanı olabilir. Bu nedenle ileti aracılarını büyük ölçekte çalıştırmanın tüm kullanılabilirlik ve sağlamlık avantajlarından faydalanabilirsiniz. Ayrıca temel karmaşıklıklar konusunda endişelenmeniz de gerek yok. 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'ta ilk giren ilk çıkar ilkesinin (FIFO) kullanılmasını garantilemek için oturumlar kullanın. İleti oturumları, sınırsız sayıda birbiriyle ilgili iletinin birlikte ve düzenli olarak işlenmesini sağlar.
Otomatik iletme
Otomatik iletme özelliği, bir kuyruk veya aboneliği aynı ad alanında olan başka bir kuyruk veya konu başlığına zincirleme eklemenize olanak tanır. 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.
Ulaşmayan posta
Service Bus, herhangi bir alıcıya teslim edilemeyen veya işlenemeyen iletileri tutmak için bir ulaşmayan posta kuyruğunu (DLQ) destekler. İletileri daha sonra DLQ'dan kaldırabilir ve inceleyebilirsiniz.
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ş için kullanılabilir olacak şekilde zamanlamayı.
İleti erteleme
Bir kuyruk veya abonelik istemcisi işlemeye hazır olduğunu ancak uygulama içindeki özel koşullar nedeniyle şu anda işlemenin mümkün olmadığını bir ileti aldığında varlık, iletinin alınmasını sonraki bir noktaya erteleyebilir. İleti kuyrukta veya abonelikte kalır, ancak bir kenara ayarlanır.
Toplu İşleme
İstemci tarafında toplu iş, bir kuyruk veya konu başlığı istemcisinin bir iletiyi göndermeyi belirli bir süre için ertelemesini sağlar. İstemci bu süre içinde daha fazla ileti gönderirse, iletileri tek bir toplu iş içinde iletir.
İşlemler
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.
Filtreleme 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. Eşleşen her kural koşulu için abonelik, iletinin, her eşleşme kuralı için farklı şekilde açıklama eklenebilecek bir kopyasını üretir.
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. En düşük süre 5 dakikadır.
Yineleme algılama
İstemcinin gönderme işlemi sonucu konusunda şüpheye neden olan bir hata oluşursa, yineleme algılama, gönderenin aynı iletiyi yeniden göndermesini sağlayarak bu durumlardan kuşku duyar ve kuyruk veya konu, yinelenen kopyaları atar.
Paylaşılan erişim imzası (SAS), Rol tabanlı erişim denetimi ve yönetilen kimlikler
Service Bus, Paylaşılan Erişim İmzaları (SAS), Rol Tabanlı Erişim Denetimi (RBAC) ve Azure kaynakları için Yönetilen kimlikler gibi güvenlik 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.
Güvenlik
Service Bus standart Gelişmiş İleti Sıraya Alma Protokolü (AMQP) 1.0 ve HTTP/REST protokollerini destekler.
Not
Bu özellikler hakkında daha fazla bilgi için bkz. Azure Service Bus.
Standartlara ve protokollere uyumluluk
Açık ISO/IEC Service Bus gelişmiş mesajlaşma kuyruğa alma protokolü (AMQP) 1.0'dır. Müşterilerin ActiveMQ veya RabbitMQ Service Bus şirket içi aracılara karşı çalışacak uygulamalar yazmalarına olanak sağlar. 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 Message Service (JMS) 2.0 API'si ile tamamen uyumludur. Ayrıca 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ştirilmiştir. Diğer aracılardan Azure Service Bus 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 gerekir. Bir örnek için bkz. ActiveMQ geçiş kılavuzu.
İstemci kitaplıkları
tam olarak Service Bus istemci kitaplıkları Azure SDK aracılığıyla kullanılabilir.
- .NET için Azure Service Bus
- Java için Azure Service Bus kitaplıkları
- Java JMS 2.0 için Azure Service Bus sağlayıcısı
- JavaScript Service Bus TypeScript için Azure Depolama Modülleri
- Python için Azure Service Bus kitaplıkları
Azure Service Bus birincil protokolü AMQP 1.0'dır ve tüm AMQP 1.0 uyumlu protokol istemcilerinden kullanılabilir. Çeşitli açık kaynak AMQP istemcilerinin birlikte çalışabilirliği açıkça gösteren Service Bus vardır. AmQP 1.0 istemcileri ile doğrudan Service Bus özelliklerini kullanmayı anlamak için AMQP 1.0 protokol kılavuzunu gözden geçirebilirsiniz.
| 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 Qpıd 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ştirilmiştir, örneğin:
Sonraki adımlar
Service Bus mesajlaşmasını kullanmaya başlamak için aşağıdaki makalelere bakın: