Použití starší knihovny rozhraní WindowsAzure.ServiceBus .NET Framework s AMQP 1.0

Poznámka:

Tento článek je určený pro stávající uživatele balíčku WindowsAzure.ServiceBus, kteří chtějí přejít na používání AMQP ve stejném balíčku. I když tento balíček bude dál dostávat kritické opravy chyb až do 30. září 2026, důrazně doporučujeme upgradovat na nový balíček Azure.Messaging.ServiceBus , který je k dispozici od listopadu 2020 a který ve výchozím nastavení podporuje AMQP.

30. září 2026 vyřadíme knihovny sady SDK služby Azure Service Bus pro WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus a com.microsoft.azure.servicebus, které nevyhovují pokynům sady Azure SDK. Také ukončíme podporu protokolu SBMP, takže tento protokol už nebudete moct používat po 30. září 2026. Před tímto datem migrujte na nejnovější knihovny sady Azure SDK, které nabízejí důležité aktualizace zabezpečení a vylepšené funkce.

I když starší knihovny je možné používat i po 30. září 2026, nebudou už od Microsoftu dostávat oficiální podporu a aktualizace. Další informace najdete v oznámení o vyřazení podpory.

Ve výchozím nastavení balíček WindowsAzure.ServiceBus komunikuje se službou Service Bus pomocí vyhrazeného protokolu založeného na protokolu SOAP s názvem SBMP (Service Bus Messaging Protocol). Ve verzi 2.1 byla přidána podpora AMQP 1.0, kterou doporučujeme místo výchozího protokolu použít.

Pokud chcete místo výchozího protokolu použít AMQP 1.0, vyžaduje explicitní konfiguraci v připojovací řetězec Service Bus nebo v konstruktorech klienta prostřednictvím možnosti TransportType. Kromě této změny zůstane kód aplikace při použití AMQP 1.0 beze změny.

Při použití AMQP se nepodporuje několik funkcí rozhraní API. Tyto nepodporované funkce jsou uvedeny v části Rozdíly v chování. Některá pokročilá nastavení konfigurace mají také jiný význam při použití AMQP.

Konfigurace připojovací řetězec pro použití AMQP 1.0

Připojte připojovací řetězec s pokynem ;TransportType=Amqp klientovi, aby se připojil ke službě Service Bus pomocí AMQP 1.0. Příklad:

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

Kde namespace a SAS key jsou získány z webu Azure Portal při vytváření oboru názvů služby Service Bus. Další informace najdete v tématu Vytvoření oboru názvů služby Service Bus pomocí webu Azure Portal.

AMQP přes WebSockets

Pokud chcete použít AMQP přes WebSockets, nastavte TransportType v připojovací řetězec na AmqpWebSocketshodnotu . Příklad: Endpoint=sb://[namespace].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[SAS key];TransportType=AmqpWebSockets.

Serializace zpráv

Při použití výchozího protokolu je výchozím chováním serializace klientské knihovny .NET použití typu DataContractSerializer serializace instance BrokeredMessage pro přenos mezi klientskou knihovnou a službou Service Bus. Při použití režimu přenosu AMQP používá klientská knihovna systém typů AMQP pro serializaci zprostředkované zprávy do zprávy AMQP. Tato serializace umožňuje přijetí a interpretaci zprávy přijímající aplikací, která je potenciálně spuštěna na jiné platformě, například aplikací v Javě, která používá rozhraní JMS API pro přístup ke službě Service Bus.

Při vytváření BrokeredMessage instance můžete poskytnout .NET objekt jako parametr konstruktoru, který bude sloužit jako tělo zprávy. U objektů, které lze mapovat na primitivní typy AMQP, se tělo serializuje do datových typů AMQP. Pokud objekt nelze přímo mapovat na primitivní typ AMQP; to znamená, vlastní typ definovaný aplikací, pak je objekt serializován pomocí DataContractSerializer a serializované bajty jsou odeslány v datové zprávě AMQP.

Pro usnadnění interoperability s klienty non-.NET použijte pouze typy .NET, které lze serializovat přímo do typů AMQP pro text zprávy. Následující tabulka podrobně popisuje tyto typy a odpovídající mapování na systém typů AMQP.

Typ základního objektu .NET Mapovaný typ AMQP Typ základního oddílu AMQP
bool boolean Hodnota AMQP
byte ubyte Hodnota AMQP
ushort ushort Hodnota AMQP
uint uint Hodnota AMQP
ulong ulong Hodnota AMQP
sbyte byte Hodnota AMQP
short short Hodnota AMQP
int int Hodnota AMQP
long long Hodnota AMQP
float (číslo s plovoucí řádovou čárkou) float (číslo s plovoucí řádovou čárkou) Hodnota AMQP
double double Hodnota AMQP
decimal decimal128 Hodnota AMQP
char char Hodnota AMQP
DateTime časové razítko Hodnota AMQP
Identifikátor GUID Uuid Hodnota AMQP
byte[] binární Hodnota AMQP
řetězec řetězec Hodnota AMQP
System.collections.ilist list Hodnota AMQP: položky obsažené v kolekci mohou být pouze položky definované v této tabulce.
System.array pole Hodnota AMQP: položky obsažené v kolekci mohou být pouze položky definované v této tabulce.
System.collections.idictionary map Hodnota AMQP: položky obsažené v kolekci mohou být pouze položky definované v této tabulce. Poznámka: Podporují se pouze klíče řetězců.
Identifikátor URI Popisovaný řetězec (viz následující tabulka) Hodnota AMQP
DateTimeOffset Popis long(viz následující tabulka) Hodnota AMQP
TimeSpan Popis long(viz následující) Hodnota AMQP
Stream binární Data AMQP (mohou být více). Oddíly Data obsahují nezpracované bajty přečtené z objektu Stream.
Jiný objekt binární Data AMQP (mohou být více). Obsahuje serializovaný binární soubor objektu, který používá DataContractSerializer nebo serializátor dodané aplikací.
Typ .NET Mapovaný typ AMQP Notes
Identifikátor URI <type name=”uri” class=restricted source=”string”> <descriptor name=”com.microsoft:uri” /></type> Identifikátor 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

Rozdíly v chování

Při použití AMQP existuje několik malých rozdílů v chování rozhraní API WindowsAzure.ServiceBus v porovnání s výchozím protokolem:

  • Vlastnost OperationTimeout je ignorována.
  • MessageReceiver.Receive(TimeSpan.Zero) je implementována jako MessageReceiver.Receive(TimeSpan.FromSeconds(10)).
  • Dokončování zpráv pomocí zámkových tokenů může provádět pouze příjemci zpráv, kteří zprávy původně obdrželi.

Řízení nastavení protokolu AMQP

Rozhraní .NET API zpřístupňují několik nastavení pro řízení chování protokolu AMQP:

Další kroky

Jste připraveni na další informace? Navštivte následující odkazy: