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álvaMessageReceiver.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:
- MessageReceiver.PrefetchCount: A hivatkozásra alkalmazott kezdeti kreditet szabályozza. Az alapértelmezett érték a 0.
- MessagingFactory Gépház. AmqpTransport Gépház. MaxFrameSize: A maximális AMQP-keretméretet szabályozza a kapcsolat nyitvatartási ideje alatt történő egyeztetés során. Az alapértelmezett érték 65 536 bájt.
- MessagingFactory Gépház. AmqpTransport Gépház. BatchFlushInterval: Ha az átvitelek kötegelhetők, ez az érték határozza meg az áthelyezések küldésének maximális késleltetését. Alapértelmezés szerint a feladók/fogadók öröklik. Az egyes feladók/fogadók felülbírálhatják az alapértelmezett értéket, ami 20 ezredmásodperc.
- MessagingFactory Gépház. AmqpTransport Gépház. UseSslStreamSecurity: Azt szabályozza, hogy az AMQP-kapcsolatok TLS-kapcsolaton keresztül jönnek-e létre. Az alapértelmezett érték igaz.
Következő lépések
Készen áll a tanulásra? Látogasson el a következő hivatkozásokra: