Service Bus'ta Gelişmiş İleti Kuyruğa Alma Protokolü (AMQP) 1.0 desteği

Azure Service Bus bulut hizmeti, birincil iletişim aracı olarak AMQP 1.0'ı kullanır. Microsoft, son on yılda AMQP'yi geliştirmek ve geliştirmek için hem müşteriler hem de rakip mesajlaşma aracıları satıcıları olmak üzere sektördeki iş ortaklarıyla etkileşime geçmiş ve OASIS AMQP Teknik Komitesi'nde yeni uzantılar geliştirilmiştir. AMQP 1.0 bir ISO ve IEC standardıdır (ISO 19464:20149).

AMQP, satıcıdan bağımsız ve uygulamadan bağımsız, açık standart protokol kullanarak platformlar arası, karma uygulamalar oluşturmanıza olanak tanır. Farklı diller ve çerçeveler kullanılarak oluşturulan ve farklı işletim sistemlerinde çalışan bileşenleri kullanarak uygulamalar oluşturabilirsiniz. Tüm bu bileşenler Service Bus'a bağlanabilir ve yapılandırılmış iş iletilerini verimli ve tam uygunlukta sorunsuz bir şekilde değiştirebilir.

Giriş: AMQP 1.0 nedir ve neden önemlidir?

Geleneksel olarak, ileti odaklı ara yazılım ürünleri istemci uygulamaları ve aracılar arasındaki iletişim için özel protokoller kullanmıştır. Bu, belirli bir satıcının mesajlaşma aracısını seçtikten sonra, istemci uygulamalarınızı bu aracıya bağlamak için bu satıcının kitaplıklarını kullanmanız gerektiği anlamına gelir. Bir uygulamayı farklı bir ürüne taşıma, tüm bağlı uygulamalarda kod değişiklikleri gerektirdiğinden bu satıcıya bir ölçüde bağımlılık sağlar. Java topluluğunda Java Message Service (JMS) ve Spring Framework'ün soyutlamaları gibi dile özgü API standartları bu sorunu bir ölçüde hafifletir, ancak dar bir özellik kapsamına sahiptir ve diğer dilleri kullanan geliştiricileri dışlar.

Ayrıca, farklı satıcılardan mesajlaşma aracılarını bağlamak karmaşıktır. Genellikle iletileri bir sistemden diğerine taşımak ve bunların özel ileti biçimleri arasında çeviri yapmak için uygulama düzeyinde köprü oluşturma gerektirir. Bu yaygın bir gereksinimdir; örneğin, eski farklı sistemlere yeni bir birleşik arabirim sağlamanız veya birleştirme sonrasında BT sistemlerini tümleştirmeniz gerektiğinde. AMQP, örneğin Apache Qpid Dağıtım Yönlendiricisi gibi yönlendiricileri veya RabbitMQ'ninki gibi yerel aracılı "kürekleri" kullanarak doğrudan birbirine bağlanma aracılarına olanak tanır.

Yazılım sektörü hızlı hareket eden bir iştir; yeni programlama dilleri ve uygulama çerçeveleri bazen göz açıp açabilecek bir hızda kullanıma sunulmuştur. Benzer şekilde, BT sistemlerinin gereksinimleri zaman içinde gelişir ve geliştiriciler en son platform özelliklerinden yararlanmak ister. Ancak, bazen seçilen mesajlaşma satıcısı bu platformları desteklemez. Mesajlaşma protokolleri özelse, başkalarının bu yeni platformlar için kitaplık sağlaması mümkün değildir. Bu nedenle, mesajlaşma ürününü kullanmaya devam etmenizi sağlayan ağ geçitleri veya köprüler oluşturma gibi yaklaşımları kullanmanız gerekir.

Gelişmiş Message Queuing Protokolü (AMQP) 1.0'ın geliştirilmesi bu sorunlardan kaynaklandı. Çoğu finansal hizmet şirketi gibi mesaj odaklı ara yazılımların ağır kullanıcıları olan JP Morgan Chase'den kaynaklandı. Amaç basitti: Farklı diller, çerçeveler ve işletim sistemleri kullanılarak oluşturulan bileşenleri kullanarak ileti tabanlı uygulamalar derlemeyi mümkün kılan açık standart bir mesajlaşma protokolü oluşturmak ve bunların tümü bir dizi tedarikçinin en iyi bileşenlerini kullanmaktı.

AMQP 1.0 teknik özellikleri

AMQP 1.0, sağlam, platformlar arası mesajlaşma uygulamaları oluşturmak için kullanabileceğiniz verimli, güvenilir, kablo düzeyinde bir mesajlaşma protokolüdür. Protokolün basit bir hedefi vardır: iki taraf arasında iletilerin güvenli, güvenilir ve verimli aktarımının mekaniğinin tanımlanması. İletilerin kendileri, heterojen gönderenlerin ve alıcıların yapılandırılmış iş iletilerini tam uygunlukla değiştirmesini sağlayan taşınabilir bir veri gösterimi kullanılarak kodlanır. İşte en önemli özelliklerin özeti:

  • Verimli: AMQP 1.0, protokol yönergeleri ve bunun üzerinden aktarılan iş iletileri için ikili kodlama kullanan bağlantı odaklı bir protokoldür. Ağın ve bağlı bileşenlerin kullanımını en üst düzeye çıkarmak için gelişmiş akış denetimi şemaları içerir. Buna göre protokol verimlilik, esneklik ve birlikte çalışabilirlik arasında bir denge sağlamak için tasarlanmıştır.
  • Güvenilir: AMQP 1.0 protokolü, iletilerin, tam olarak bir kez onaylanan teslimden güvenilirliğe kadar çeşitli güvenilirlik garantileriyle değişimini sağlar.
  • Esnek: AMQP 1.0, farklı topolojileri desteklemek için kullanılabilen esnek bir protokoldür. Aynı protokol istemciden istemciye, istemciden aracıya ve aracıdan aracıya iletişimler için kullanılabilir.
  • Aracı modelden bağımsız: AMQP 1.0 belirtimi, aracı tarafından kullanılan mesajlaşma modeli üzerinde herhangi bir gereksinim yapmaz. Bu da amqp 1.0 desteğini mevcut mesajlaşma aracılarına kolayca ekleyebilmek anlamına gelir.

AMQP 1.0 bir Standarttır (büyük harf 'S' ile)

AMQP 1.0, ISO ve IEC tarafından ISO/IEC 19464:2014 olarak onaylanan uluslararası bir standarttır.

AMQP 1.0, 2008 yılından bu yana hem teknoloji tedarikçileri hem de son kullanıcı firmaları olmak üzere 20'den fazla şirketin çekirdek grubu tarafından geliştirilmektedir. Bu süre boyunca, kullanıcı firmaları gerçek dünya iş gereksinimlerine katkıda bulunmuştur ve teknoloji satıcıları bu gereksinimleri karşılamak için protokolü geliştirmektedir. Süreç boyunca, satıcılar uygulamaları arasındaki birlikte çalışabilirliği doğrulamak için işbirliği yaptıkları atölyelere katılmışlardır.

Ekim 2011'de, geliştirme çalışmaları Yapılandırılmış Bilgi Standartlarının geliştirilmesi için Kuruluş (OASIS) içinde bir teknik komiteye geçiş yaptı ve OASIS AMQP 1.0 Standard, Ekim 2012'de yayımlandı. Aşağıdaki firmalar, standardın geliştirilmesi sırasında teknik komiteye katıldı:

  • Teknoloji satıcıları: Axway Software, Huawei Technologies, IIT Software, INETCO Systems, Kaazing, Microsoft, Mitre Corporation, Primeton Technologies, Progress Software, Red Hat, SITA, Software AG, Solace Systems, VMware, WSO2, Zenika.
  • Kullanıcı firmaları: Bank of America, Credit Suisse, Deutsche Boerse, Goldman Sachs, JPMorgan Chase.

OASIS AMQP Teknik Komitesi'nin mevcut sandalyeleri Red Hat ve Microsoft'u temsil etmektedir.

Açık standartların yaygın olarak belirtilen avantajlarından bazıları şunlardır:

  • Satıcının kilitlenme olasılığı daha az
  • Birlikte çalışabilirlik
  • Kitaplıkların ve araçların geniş kullanılabilirliği
  • Eskiye karşı koruma
  • Bilgili personelin kullanılabilirliği
  • Daha düşük ve yönetilebilir risk

AMQP 1.0 ve Service Bus

Azure Service Bus'ta AMQP 1.0 desteği, verimli bir ikili protokol kullanarak çeşitli platformlardan Service Bus kuyruğa alma ve aracılı mesajlaşma özelliklerini yayımlama/abone olma özelliklerini kullanabileceğiniz anlamına gelir. Ayrıca, dillerin, çerçevelerin ve işletim sistemlerinin bir karışımı kullanılarak oluşturulan bileşenlerden oluşan uygulamalar oluşturabilirsiniz.

Aşağıdaki şekilde, Standart Java İleti Hizmeti (JMS) API'sini ve Windows üzerinde çalışan .NET istemcilerini kullanarak yazılmış, Linux üzerinde çalışan Java istemcilerinin AMQP 1.0 kullanarak Service Bus aracılığıyla ileti alışverişi gerçekleştirilen örnek bir dağıtım gösterilmektedir.

Diagram showing one Service Bus exchanging messages with two Linux environments and two Windows environments.

Şekil 1: Service Bus ve AMQP 1.0 kullanan platformlar arası mesajlaşmayı gösteren örnek dağıtım senaryosu

Azure SDK aracılığıyla sağlanan tüm desteklenen Service Bus istemci kitaplıkları AMQP 1.0'ı kullanır.

AMQP-over-WebSockets protokol seçeneği, HTTP/REST API gibi TCP 443 bağlantı noktası üzerinden çalışır, ancak aksi takdirde işlevsel olarak düz AMQP ile aynıdır. Bu seçenek, fazladan el sıkışması gidiş dönüşleri nedeniyle daha yüksek ilk bağlantı gecikme süresine ve HTTPS bağlantı noktasının paylaşılması için biraz daha fazla ek yüke sahiptir. Bu mod seçilirse, iletişim için 443 numaralı TCP bağlantı noktası yeterlidir. Aşağıdaki seçenekler AMQP WebSockets modunun seçilmesine izin verir.

Dil Seçenek
.NET (Azure.Messaging.ServiceBus) ServiceBusClientOptions'i parametre olarak alan bir oluşturucu kullanarak ServiceBusClient oluşturun. ServiceBusClientOptions.TransportType değerini ServiceBusTransportType.AmqpWebSockets olarak ayarlayın
.NET (Microsoft.Azure.ServiceBus) İstemci nesneleri oluştururken TransportType, ServiceBus Bağlan ion veya ServiceBus Bağlan ionStringBuilder'ı parametre olarak kullanan oluşturucuları kullanın.

Parametre olarak alan transportType yapı için parametresini TransportType.AmqpWebSockets olarak ayarlayın.

Parametre olarak alan ServiceBusConnection oluşturucu için ServiceBus Bağlan ion değerini ayarlayın. TransportType-TransportType.AmqpWebSockets.

kullanıyorsanız ServiceBusConnectionStringBuilder, öğesini belirtmek transportTypeiçin size bir seçenek sağlayan oluşturucuları kullanın.

Java (com.azure.messaging.servicebus) İstemci oluştururken ServiceBusClientBuilder.transportType değerini AmqpTransportType.AMQP.AMQP_WEB_SOCKETS olarak ayarlayın
Java (com.microsoft.azure.servicebus) İstemci oluştururken com.microsoft.azure.servicebus.Client Ayarlar içinde com.microsoft.azure.servicebus.primitives.TransportType.AMQP_WEB_SOCKETS olarak ayarlayın transportType
JavaScript Service Bus istemci nesneleri oluştururken, ServiceBusClientOptions içindeki özelliğini kullanınwebSocketOptions.
Python Service Bus istemcileri oluştururken ServiceBusClient.transport_type TransportType.AmqpOverWebSocket olarak ayarlayın

30 Eylül 2026'da Azure SDK yönergelerine uymayan WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus ve com.microsoft.azure.servicebus Azure Service Bus SDK kitaplıklarını kullanımdan kaldıracağız. Ayrıca SBMP protokolünün desteğini de sonlandıracağız, bu nedenle 30 Eylül 2026'da bu protokolü artık kullanamayacaksınız. Bu tarihten önce kritik güvenlik güncelleştirmeleri ve geliştirilmiş özellikler sunan en son Azure SDK kitaplıklarına geçiş yapın.

Eski kitaplıklar 30 Eylül 2026'dan sonra da kullanılabilir olsa da artık Microsoft'tan resmi destek ve güncelleştirmeler almayacaktır. Daha fazla bilgi için bkz . destek kullanımdan kaldırma duyurusu.

Ayrıca, herhangi bir AMQP 1.0 uyumlu protokol yığınından Service Bus kullanabilirsiniz:

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

Özet

  • AMQP 1.0, platformlar arası, karma uygulamalar oluşturmak için kullanabileceğiniz açık, güvenilir bir mesajlaşma protokolüdür. AMQP 1.0 bir OASIS standardıdır.

Sonraki adımlar

Daha fazla bilgi edinmeye hazır mısınız? Aşağıdaki bağlantıları ziyaret edin: