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 alsMessageReceiver.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:
- MessageReceiver.PrefetchCount: bepaalt het initiële tegoed dat op een koppeling wordt toegepast. De standaardwaarde is 0.
- MessagingFactory Instellingen. AmqpTransport Instellingen. MaxFrameSize: bepaalt de maximale GROOTTE van het AMQP-frame dat tijdens de onderhandeling wordt aangeboden tijdens de open tijd van de verbinding. De standaardwaarde is 65.536 bytes.
- MessagingFactory Instellingen. AmqpTransport Instellingen. BatchFlushInterval: als overdrachten batchgewijs zijn, bepaalt deze waarde de maximale vertraging voor het verzenden van verwijderingen. Overgenomen door afzenders/ontvangers standaard. Afzonderlijke afzender/ontvanger kan de standaardwaarde overschrijven. Dit is 20 milliseconden.
- MessagingFactory Instellingen. AmqpTransport Instellingen. UseSslStreamSecurity: hiermee bepaalt u of AMQP-verbindingen tot stand zijn gebracht via een TLS-verbinding. De standaardwaarde is waar.
Volgende stappen
Wilt u meer weten? Ga naar de volgende koppelingen: