MessageInteropExtensions Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Classe d’extension de message qui fournit des méthodes d’extension pour désérialiser le corps d’un message sérialisé et envoyé à la file d’attente/rubrique ServiceBus à l’aide de la bibliothèque cliente WindowsAzure.Messaging. La bibliothèque cliente WindowsAzure.Messaging sérialise les objets à l’aide du Microsoft.Azure.ServiceBus.InteropExtensions.DataContractBinarySerializer (sérialiseur par défaut) ou DataContractSerializer lors de l’envoi de messages. Cette classe fournit des méthodes d’extension pour désérialiser et récupérer le corps de ces messages.
public static class MessageInteropExtensions
type MessageInteropExtensions = class
Public Module MessageInteropExtensions
- Héritage
-
MessageInteropExtensions
Remarques
1. Si un message est envoyé et reçu uniquement à l’aide de cette bibliothèque cliente Microsoft.Azure.ServiceBus, les méthodes d’extension ci-dessous ne sont pas pertinentes et ne doivent pas être utilisées.
2. Si cette bibliothèque cliente est utilisée pour recevoir des messages envoyés à l’aide de la bibliothèque cliente WindowsAzure.Messaging et de cette bibliothèque (Microsoft.Azure.ServiceBus), les utilisateurs doivent ajouter une propriété UserProperties User lors de l’envoi du message. Lors de la réception du message, cette propriété peut être examinée pour déterminer si le message provient de la bibliothèque cliente WindowsAzure.Messaging et, dans l’affirmative, utiliser le message. Méthode d’extension GetBody() pour obtenir le corps réel associé au message.
---------------------------------------------- Scénarios d’utilisation de la méthode d’extension GetBody : ---------------------------------------------- Si le message a été construit à l’aide de la bibliothèque cliente WindowsAzure.Messaging comme suit :
var message1 = new BrokeredMessage("contoso"); // Sending a plain string
var message2 = new BrokeredMessage(sampleObject); // Sending an actual customer object
var message3 = new BrokeredMessage(Encoding.UTF8.GetBytes("contoso")); // Sending a UTF8 encoded byte array object
await messageSender.SendAsync(message1);
await messageSender.SendAsync(message2);
await messageSender.SendAsync(message3);
Récupérez ensuite les objets d’origine à l’aide de cette bibliothèque cliente comme suit : (Par défaut Microsoft.Azure.ServiceBus.InteropExtensions.DataContractBinarySerializer , sera utilisé pour désérialiser et récupérer le corps. Si un sérialiseur autre que celui a été utilisé, transmettez le sérialiseur explicitement.)
var message1 = await messageReceiver.ReceiveAsync();
var returnedData1 = message1.GetBody<string>();
var message2 = await messageReceiver.ReceiveAsync();
var returnedData2 = message1.GetBody<SampleObject>();
var message3 = await messageReceiver.ReceiveAsync();
var returnedData3Bytes = message1.GetBody<byte[]>();
Console.WriteLine($"Message3 String: {Encoding.UTF8.GetString(returnedData3Bytes)}");
------------------------------------------------- Scénarios pour NE PAS utiliser la méthode d’extension GetBody : ------------------------------------------------- Si le message a été envoyé à l’aide de la bibliothèque cliente WindowsAzure.Messaging comme suit : var message4 = new BrokeredMessage(new MemoryStream(Encoding.UTF8.GetBytes(« contoso »))); await messageSender.SendAsync(message4);
Récupérez ensuite les objets d’origine à l’aide de cette bibliothèque cliente comme suit : var message4 = await messageReceiver.ReceiveAsync(); string returned = Encoding.UTF8.GetString(message4. Corps); Étant donné que le message a été envoyé en tant que Stream, aucune désérialisation n’est requise ici.
Méthodes
GetBody<T>(Message, XmlObjectSerializer) |
Désérialise le corps d’un message sérialisé à l’aide de XmlObjectSerializer |
S’applique à
Azure SDK for .NET