Partager via


MessageInteropExtensions Classe

Définition

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 à