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 AmqpWebSockets
hodnotu . 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 jakoMessageReceiver.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:
- MessageReceiver.PrefetchCount: Určuje počáteční kredit použitý na odkaz. Výchozí hodnota je 0.
- MessagingFactory Nastavení AmqpTransport Nastavení. MaxFrameSize: Řídí maximální velikost rámce AMQP nabízenou během vyjednávání v době otevření připojení. Výchozí hodnota je 65 536 bajtů.
- MessagingFactory Nastavení AmqpTransport Nastavení. BatchFlushInterval: Pokud jsou přenosy dávkové, tato hodnota určuje maximální prodlevu odesílání dispozicí. Ve výchozím nastavení dědí odesílatelé nebo příjemci. Individuální odesílatel/příjemce může přepsat výchozí hodnotu, což je 20 milisekund.
- MessagingFactory Nastavení AmqpTransport Nastavení. UseSslStreamSecurity: Určuje, jestli se připojení AMQP navazují přes připojení TLS. Výchozí hodnota je true.
Další kroky
Jste připraveni na další informace? Navštivte následující odkazy: