AMQP 1.0 ile eski WindowsAzure.ServiceBus .NET framework kitaplığını kullanma

Dekont

Bu makale, aynı paket içinde AMQP'yi kullanmaya geçmek isteyen WindowsAzure.ServiceBus paketinin mevcut kullanıcılarına yöneliktir. Bu paket 30 Eylül 2026'ya kadar kritik hata düzeltmeleri almaya devam edecek olsa da, Kasım 2020 itibarıyla kullanılabilen ve varsayılan olarak AMQP'yi destekleyen yeni Azure.Messaging.ServiceBus paketine yükseltmeyi kesinlikle öneririz.

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.

Varsayılan olarak, WindowsAzure.ServiceBus paketi Service Bus hizmetiyle Service Bus Mesajlaşma Protokolü (SBMP) adlı ayrılmış bir SOAP tabanlı protokol kullanarak iletişim kurar. Sürüm 2.1'de amqp 1.0 için varsayılan protokol yerine kullanmanızı önerdiğimiz destek eklendi.

Varsayılan protokol yerine AMQP 1.0 kullanmak için Service Bus bağlantı dizesi veya TransportType seçeneği aracılığıyla istemci oluşturucularında açık yapılandırma gerekir. Bu değişiklik dışında, AMQP 1.0 kullanılırken uygulama kodu değişmeden kalır.

AMQP kullanılırken desteklenmeyen birkaç API özelliği vardır. Bu desteklenmeyen özellikler Davranış farklılıkları bölümünde listelenmiştir. Bazı gelişmiş yapılandırma ayarlarının AMQP kullanılırken farklı bir anlamı da vardır.

bağlantı dizesi AMQP 1.0 kullanacak şekilde yapılandırma

İstemciye AMQP 1.0 kullanarak Service Bus'a bağlantı oluşturmasını bildirmek için ile ;TransportType=Amqp bağlantı dizesi'nizi ekleme. Örneğin,

Endpoint=sb://[namespace].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[SAS key];TransportType=Amqp

namespaceSAS key Service Bus ad alanı oluşturduğunuzda Azure portalındanve elde edilir. Daha fazla bilgi için bkz . Azure portalını kullanarak Service Bus ad alanı oluşturma.

WebSockets üzerinden AMQP

WebSockets üzerinden AMQP kullanmak için bağlantı dizesi AmqpWebSocketsolarak ayarlayınTransportType. Örneğin: Endpoint=sb://[namespace].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[SAS key];TransportType=AmqpWebSockets.

İleti serileştirme

Varsayılan protokolü kullanırken, .NET istemci kitaplığının varsayılan serileştirme davranışı, istemci kitaplığı ile Service Bus hizmeti arasında aktarım için Bir BrokeredMessage örneğini seri hale getirmek için DataContractSerializer türünü kullanmaktır. AMQP aktarım modu kullanılırken, istemci kitaplığı aracılı iletinin AMQP iletisine seri hale getirilmesi için AMQP tür sistemini kullanır. Bu serileştirme, iletinin farklı bir platformda çalıştırılma olasılığı olan bir alıcı uygulama (örneğin, Service Bus'a erişmek için JMS API'sini kullanan bir Java uygulaması) tarafından alınmasına ve yorumlanmasına olanak tanır.

Bir BrokeredMessage örneği oluşturduğunuzda, iletinin gövdesi olarak hizmet vermek için oluşturucuya parametre olarak bir .NET nesnesi sağlayabilirsiniz. AMQP ilkel türlerine eşlenebilen nesneler için gövde AMQP veri türlerine serileştirilir. Nesne bir AMQP ilkel türüne doğrudan eşlenemiyorsa; başka bir ifadeyle, uygulama tarafından tanımlanan özel bir tür, ardından nesne DataContractSerializer kullanılarak serileştirilir ve serileştirilmiş baytlar bir AMQP veri iletisinde gönderilir.

non-.NET istemcileriyle birlikte çalışabilirliği kolaylaştırmak için yalnızca iletinin gövdesi için doğrudan AMQP türlerine seri hale getirilebilen .NET türlerini kullanın. Aşağıdaki tabloda söz konusu türler ve AMQP tür sistemine karşılık gelen eşleme ayrıntılarıyla yer alır.

.NET Gövde Nesne Türü Eşlenen AMQP Türü AMQP Gövde Bölüm Türü
ikili boolean AMQP Değeri
byte ubyte AMQP Değeri
ushort ushort AMQP Değeri
uint uint AMQP Değeri
ulong ulong AMQP Değeri
sbyte byte AMQP Değeri
short short AMQP Değeri
int int AMQP Değeri
uzun uzun AMQP Değeri
kayan noktalı sayı kayan noktalı sayı AMQP Değeri
çift çift AMQP Değeri
ondalık ondalık128 AMQP Değeri
char char AMQP Değeri
Tarih-Saat timestamp AMQP Değeri
GUID uuid AMQP Değeri
bayt[] ikili AMQP Değeri
Dize Dize AMQP Değeri
System.Collections.IList listele AMQP Değeri: Koleksiyonda yer alan öğeler yalnızca bu tabloda tanımlanan öğeler olabilir.
Array dizi AMQP Değeri: Koleksiyonda yer alan öğeler yalnızca bu tabloda tanımlanan öğeler olabilir.
Idictionary map AMQP Değeri: Koleksiyonda yer alan öğeler yalnızca bu tabloda tanımlanan öğeler olabilir. Not: Yalnızca Dize anahtarları desteklenir.
Uri Açıklanan dize (aşağıdaki tabloya bakın) AMQP Değeri
DateTimeOffset Uzun açıklandı (aşağıdaki tabloya bakın) AMQP Değeri
TimeSpan Uzun açıklandı (aşağıdakilere bakın) AMQP Değeri
Akış ikili AMQP Verileri (birden çok olabilir). Veri bölümleri Stream nesnesinden okunan ham baytları içerir.
Diğer Nesne ikili AMQP Verileri (birden çok olabilir). DataContractSerializer veya uygulama tarafından sağlanan seri hale getiriciyi kullanan nesnenin serileştirilmiş ikili dosyasını içerir.
.NET Türü Eşlenen AMQP Açıklanan Tür Notlar
Uri <type name=”uri” class=restricted source=”string”> <descriptor name=”com.microsoft:uri” /></type> Uri.AbsoluteUri
DateTimeOffset <type name=”datetime-offset” class=restricted source=”long”> <descriptor name=”com.microsoft:datetime-offset” /></type> DateTimeOffset.UtcTicks
TimeSpan <type name=”timespan” class=restricted source=”long”> <descriptor name=”com.microsoft:timespan” /></type> TimeSpan.Ticks

Davranış farklılıkları

AMQP kullanırken WindowsAzure.ServiceBus API'sinin davranışında varsayılan protokolle karşılaştırıldığında bazı küçük farklılıklar vardır:

  • OperationTimeout özelliği yoksayılır.
  • MessageReceiver.Receive(TimeSpan.Zero) olarak MessageReceiver.Receive(TimeSpan.FromSeconds(10))uygulanır.
  • İletileri kilit belirteçleriyle tamamlama işlemi yalnızca iletileri ilk alan ileti alıcıları tarafından gerçekleştirilebilir.

AMQP protokol ayarlarını denetleme

.NET API'leri AMQP protokolünün davranışını denetlemek için çeşitli ayarları kullanıma sunar:

Sonraki adımlar

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