Régi WindowsAzure.ServiceBus .NET-keretrendszertár használata az AMQP 1.0-val

Megjegyzés:

Ez a cikk a WindowsAzure.ServiceBus csomag meglévő felhasználóinak szól, akik az AMQP használatára szeretnének váltani ugyanazon a csomagon belül. Bár ez a csomag 2026. szeptember 30-ig továbbra is kritikus hibajavításokat fog kapni, határozottan javasoljuk, hogy frissítsen az új Azure.Messaging.ServiceBus csomagra, amely 2020 novemberétől érhető el, és alapértelmezés szerint támogatja az AMQP-t.

2026. szeptember 30-án kivonjuk az Azure Service Bus SDK-kódtárakat a WindowsAzure.ServiceBus, a Microsoft.Azure.ServiceBus és a com.microsoft.azure.servicebus kódtárakból, amelyek nem felelnek meg az Azure SDK irányelveinek. Az SBMP protokoll támogatását is megszüntetjük, így 2026. szeptember 30. után már nem használhatja ezt a protokollt. Migrálás a legújabb Azure SDK-kódtárakba, amelyek kritikus fontosságú biztonsági frissítéseket és továbbfejlesztett képességeket kínálnak ezen dátum előtt.

Bár a régebbi kódtárak 2026. szeptember 30-tól továbbra is használhatók, a Microsoft már nem kap hivatalos támogatást és frissítéseket. További információkért lásd a támogatási nyugdíjazási bejelentést.

A WindowsAzure.ServiceBus-csomag alapértelmezés szerint egy dedikált SOAP-alapú protokoll, a Service Bus Messaging Protocol (SBMP) használatával kommunikál a Service Bus szolgáltatással. A 2.1-es verzióban az AMQP 1.0 támogatása lett hozzáadva, amelyet az alapértelmezett protokoll helyett ajánlott használni.

Az AMQP 1.0 alapértelmezett protokoll helyett való használatához explicit konfigurációra van szükség a Service Bus kapcsolati sztring vagy az ügyfélkonstruktorokban a TransportType beállításon keresztül. A módosítástól eltérően az alkalmazáskód változatlan marad az AMQP 1.0 használatakor.

Az AMQP használatakor néhány API-funkció nem támogatott. Ezek a nem támogatott funkciók a Viselkedési különbségek szakaszban találhatók. Az AMQP használatakor a speciális konfigurációs beállítások némelyike más jelentéssel is rendelkezik.

Kapcsolati sztring konfigurálása az AMQP 1.0 használatára

Fűzze hozzá a kapcsolati sztring;TransportType=Amqp, hogy utasítsa az ügyfelet, hogy az AMQP 1.0 használatával létesítse kapcsolatát a Service Bus szolgáltatással. Például:

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

A namespace Service Bus-névtér létrehozásakor az Azure Portalról szerezhető be és SAS key érhető el. További információ: Service Bus-névtér létrehozása az Azure Portal használatával.

AMQP WebSocketen keresztül

Az AMQP websocketeken keresztüli használatához állítsa TransportType a kapcsolati sztring a következőreAmqpWebSockets: . For example: Endpoint=sb://[namespace].servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[SAS key];TransportType=AmqpWebSockets.

Üzenet szerializálása

Az alapértelmezett protokoll használatakor a .NET-ügyfélkódtár alapértelmezett szerializálási viselkedése a DataContractSerializer típussal szerializál egy BrokeredMessage-példányt az ügyfélkódtár és a Service Bus szolgáltatás közötti átvitelhez. Az AMQP átviteli mód használatakor az ügyfélkódtár az AMQP típusú rendszert használja a közvetített üzenet AMQP-üzenetbe való szerializálásához. Ez a szerializálás lehetővé teszi az üzenet fogadását és értelmezését egy olyan fogadó alkalmazás számára, amely esetleg egy másik platformon fut, például egy Java-alkalmazás, amely a JMS API-t használja a Service Bus eléréséhez.

A BrokeredMessage-példány létrehozásakor paraméterként megadhat egy .NET-objektumot a konstruktornak, hogy az üzenet törzseként szolgáljon. Az AMQP primitív típusok szerint leképezhető objektumok esetében a törzs AMQP-adattípusokká szerializálva van. Ha az objektum nem képezhető le közvetlenül AMQP primitív típusba; vagyis az alkalmazás által definiált egyéni típus, majd az objektum szerializálása a DataContractSerializer használatával történik, a szerializált bájtok pedig egy AMQP-adatüzenetben lesznek elküldve.

Az non-.NET ügyfelekkel való együttműködés megkönnyítése érdekében csak olyan .NET-típusokat használjon, amelyek közvetlenül AMQP-típusokba szerializálhatók az üzenet törzséhez. Az alábbi táblázat ezeket a típusokat és az AMQP-típusrendszerhez tartozó megfeleltetést ismerteti.

.NET törzsobjektum típusa Megfeleltetett AMQP-típus AMQP törzsszakasz típusa
logikai Logikai AMQP-érték
bájt ubyte AMQP-érték
ushort ushort AMQP-érték
uint uint AMQP-érték
ulong ulong AMQP-érték
sbyte bájt AMQP-érték
Rövid Rövid AMQP-érték
egész egész AMQP-érték
hosszú hosszú AMQP-érték
float float AMQP-érték
double double AMQP-érték
tizedes decimális128 AMQP-érték
Char Char AMQP-érték
Dátum/idő timestamp AMQP-érték
GUID uuid AMQP-érték
bájt[] Bináris AMQP-érték
sztring sztring AMQP-érték
System.Collections.IList list AMQP-érték: A gyűjtemény elemei csak a táblázatban meghatározott elemek lehetnek.
System.Array array AMQP-érték: A gyűjtemény elemei csak a táblázatban meghatározott elemek lehetnek.
System.Collections.IDictionary térkép AMQP-érték: A gyűjtemény elemei csak a táblázatban meghatározott elemek lehetnek. Megjegyzés: csak a sztringkulcsok támogatottak.
Uri Leírt sztring (lásd a következő táblázatot) AMQP-érték
DateTimeOffset Hosszú leírás (lásd az alábbi táblázatot) AMQP-érték
időtartam Hosszú leírás (lásd a következőt) AMQP-érték
Stream Bináris AMQP-adatok (több is lehet). Az Adatszakaszok tartalmazzák a Stream objektumból beolvasott nyers bájtokat.
Egyéb objektum Bináris AMQP-adatok (több is lehet). A DataContractSerializert vagy az alkalmazás által biztosított szerializálót használó objektum szerializált bináris fájlját tartalmazza.
.NET-típus A leképezett AMQP ismertetett típusa Jegyzetek
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
időtartam <type name=”timespan” class=restricted source=”long”> <descriptor name=”com.microsoft:timespan” /></type> TimeSpan.Ticks

Viselkedésbeli különbségek

Az AMQP használatakor a WindowsAzure.ServiceBus API viselkedése az alapértelmezett protokollhoz képest néhány kisebb különbséget mutat:

  • Az OperationTimeout tulajdonság figyelmen kívül lesz hagyva.
  • MessageReceiver.Receive(TimeSpan.Zero)a a következőképpen van implementálva MessageReceiver.Receive(TimeSpan.FromSeconds(10))
  • Az üzenetek zárolási jogkivonatokkal való kitöltését csak azok az üzenetfogadók végezhetik el, amelyek kezdetben fogadták az üzeneteket.

AMQP protokollbeállítások szabályozása

A .NET API-k több beállítást is elérhetővé tehetnek az AMQP protokoll viselkedésének szabályozásához:

Következő lépések

Készen áll a tanulásra? Látogasson el a következő hivatkozásokra: