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
namespace
SAS key
Service Bus ad alanı oluşturduğunuzda Azure portalından ve 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 AmqpWebSockets
olarak 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)
olarakMessageReceiver.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:
- MessageReceiver.PrefetchCount: Bağlantıya uygulanan ilk krediyi denetler. Varsayılan değer 0’dır.
- MessagingFactory Ayarlar. AmqpTransport Ayarlar. MaxFrameSize: Bağlantı açık zamanında anlaşma sırasında sunulan maksimum AMQP çerçeve boyutunu denetler. Varsayılan değer 65.536 bayttır.
- MessagingFactory Ayarlar. AmqpTransport Ayarlar. BatchFlushInterval: Aktarımlar toplu işlenebilirse, bu değer, konum gönderme işleminin en uzun gecikmesini belirler. Gönderenler/alıcılar tarafından varsayılan olarak devralınır. Tek tek gönderen/alıcı varsayılan değeri (20 milisaniye) geçersiz kılabilir.
- MessagingFactory Ayarlar. AmqpTransport Ayarlar. UseSslStreamSecurity: AMQP bağlantılarının bir TLS bağlantısı üzerinden kurulup kurulmayacağını denetler. Varsayılan değer true'dur.
Sonraki adımlar
Daha fazla bilgi edinmeye hazır mısınız? Aşağıdaki bağlantıları ziyaret edin: