Verouderde WindowsAzure.ServiceBus .NET Framework-bibliotheek gebruiken met AMQP 1.0

Notitie

Dit artikel is bedoeld voor bestaande gebruikers van het WindowsAzure.ServiceBus-pakket dat wil overschakelen naar het gebruik van AMQP binnen hetzelfde pakket. Hoewel dit pakket tot 30 september 2026 kritieke foutoplossingen blijft ontvangen, raden we u ten zeerst aan om een upgrade uit te voeren naar het nieuwe Pakket Azure.Messaging.ServiceBus , dat vanaf november 2020 beschikbaar is en die AMQP standaard ondersteunt.

Op 30 september 2026 gaan we de Azure Service Bus SDK-bibliotheken WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus en com.microsoft.azure.servicebus buiten gebruik stellen, die niet voldoen aan de Azure SDK-richtlijnen. We beëindigen ook de ondersteuning van het SBMP-protocol, zodat u dit protocol na 30 september 2026 niet meer kunt gebruiken. Migreer naar de nieuwste Azure SDK-bibliotheken, die vóór die datum essentiële beveiligingsupdates en verbeterde mogelijkheden bieden.

Hoewel de oudere bibliotheken nog steeds meer dan 30 september 2026 kunnen worden gebruikt, ontvangen ze geen officiële ondersteuning en updates meer van Microsoft. Zie de aankondiging van de buitengebruikstelling van de ondersteuning voor meer informatie.

Het WindowsAzure.ServiceBus-pakket communiceert standaard met de Service Bus-service met behulp van een speciaal SOAP-protocol met de naam Service Bus Messaging Protocol (SBMP). In versie 2.1-ondersteuning voor AMQP 1.0 is toegevoegd. We raden u aan gebruik te maken in plaats van het standaardprotocol.

Voor het gebruik van AMQP 1.0 in plaats van het standaardprotocol is expliciete configuratie vereist voor de Service Bus-verbindingsreeks of in de clientconstructors via de optie TransportType. Afgezien van deze wijziging blijft de toepassingscode ongewijzigd wanneer u AMQP 1.0 gebruikt.

Er zijn enkele API-functies die niet worden ondersteund bij het gebruik van AMQP. Deze niet-ondersteunde functies worden vermeld in de sectie Gedragsverschillen. Sommige geavanceerde configuratie-instellingen hebben ook een andere betekenis bij het gebruik van AMQP.

Verbindingsreeks configureren voor het gebruik van AMQP 1.0

Voeg uw verbindingsreeks toe om ;TransportType=Amqp de client te instrueren om verbinding te maken met Service Bus met behulp van AMQP 1.0. Als een gebruiker

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

Waar namespace en SAS key worden verkregen vanuit Azure Portal wanneer u een Service Bus-naamruimte maakt. Zie Een Service Bus-naamruimte maken met behulp van Azure Portal voor meer informatie.

AMQP via WebSockets

Als u AMQP via WebSockets wilt gebruiken, stelt u TransportType in de verbindingsreeks in op AmqpWebSockets. Bijvoorbeeld: Endpoint=sb://[namespace].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[SAS key];TransportType=AmqpWebSockets.

Berichtserialisatie

Wanneer u het standaardprotocol gebruikt, is het standaardserialisatiegedrag van de .NET-clientbibliotheek het type DataContractSerializer te gebruiken om een BrokeredMessage-exemplaar te serialiseren voor transport tussen de clientbibliotheek en de Service Bus-service. Wanneer u de AMQP-transportmodus gebruikt, gebruikt de clientbibliotheek het AMQP-typesysteem voor serialisatie van het brokered bericht in een AMQP-bericht. Met deze serialisatie kan het bericht worden ontvangen en geïnterpreteerd door een ontvangende toepassing die mogelijk wordt uitgevoerd op een ander platform, bijvoorbeeld een Java-toepassing die gebruikmaakt van de JMS-API voor toegang tot Service Bus.

Wanneer u een BrokeredMessage-exemplaar maakt, kunt u een .NET-object opgeven als parameter voor de constructor die als hoofdtekst van het bericht moet fungeren. Voor objecten die kunnen worden toegewezen aan primitieve AMQP-typen, wordt de hoofdtekst geserialiseerd in AMQP-gegevenstypen. Als het object niet rechtstreeks kan worden toegewezen aan een primitief AMQP-type; Dat wil gezegd: een aangepast type dat door de toepassing is gedefinieerd, waarna het object wordt geserialiseerd met behulp van de DataContractSerializer en de geserialiseerde bytes worden verzonden in een AMQP-gegevensbericht.

Gebruik alleen .NET-typen die rechtstreeks in AMQP-typen voor de hoofdtekst van het bericht kunnen worden geserialiseerd om de interoperabiliteit met non-.NET clients te vergemakkelijken. In de volgende tabel worden deze typen en de bijbehorende toewijzing aan het AMQP-typesysteem weergegeven.

.NET Body Object Type Toegewezen AMQP-type Sectietype AMQP-hoofdtekst
bool boolean AMQP-waarde
Byte ubyte AMQP-waarde
ushort ushort AMQP-waarde
uint uint AMQP-waarde
ulong ulong AMQP-waarde
sbyte Byte AMQP-waarde
Korte Korte AMQP-waarde
geheel getal (int) geheel getal (int) AMQP-waarde
long long AMQP-waarde
zwevend zwevend AMQP-waarde
dubbel dubbel AMQP-waarde
decimaal decimal128 AMQP-waarde
char char AMQP-waarde
Datum/tijd tijdstempel AMQP-waarde
GUID uuid AMQP-waarde
byte[] binair AMQP-waarde
tekenreeks tekenreeks AMQP-waarde
System.Collections.IList lijst AMQP-waarde: items in de verzameling kunnen alleen items zijn die in deze tabel zijn gedefinieerd.
System.Array matrix AMQP-waarde: items in de verzameling kunnen alleen items zijn die in deze tabel zijn gedefinieerd.
System.Collections.IDictionary map AMQP-waarde: items in de verzameling kunnen alleen items zijn die in deze tabel zijn gedefinieerd. Opmerking: alleen tekenreekssleutels worden ondersteund.
URI Beschreven tekenreeks (zie de volgende tabel) AMQP-waarde
DateTimeOffset Lang beschreven (zie de volgende tabel) AMQP-waarde
TimeSpan Lang beschreven (zie het volgende) AMQP-waarde
Stream binair AMQP-gegevens (mogelijk meerdere). De secties Gegevens bevatten de onbewerkte bytes die zijn gelezen uit het Stream-object.
Ander object binair AMQP-gegevens (mogelijk meerdere). Bevat het geserialiseerde binaire bestand van het object dat gebruikmaakt van de DataContractSerializer of een serializer die door de toepassing wordt geleverd.
.NET-type Beschreven type toegewezen AMQP Aantekeningen
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

Gedragsverschillen

Er zijn enkele kleine verschillen in het gedrag van de WindowsAzure.ServiceBus-API bij het gebruik van AMQP, vergeleken met het standaardprotocol:

  • De eigenschap OperationTimeout wordt genegeerd.
  • MessageReceiver.Receive(TimeSpan.Zero) wordt geïmplementeerd als MessageReceiver.Receive(TimeSpan.FromSeconds(10)).
  • Het voltooien van berichten door vergrendelingstokens kan alleen worden uitgevoerd door de ontvangers van berichten die de berichten in eerste instantie hebben ontvangen.

AMQP-protocolinstellingen beheren

De .NET-API's stellen verschillende instellingen beschikbaar om het gedrag van het AMQP-protocol te beheren:

Volgende stappen

Wilt u meer weten? Ga naar de volgende koppelingen: