MessageInteropExtensions Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Uma Classe de Extensão de Mensagem que fornece métodos de extensão para desserializar o corpo de uma mensagem que foi serializada e enviada para a Fila/Tópico do ServiceBus usando a biblioteca de clientes WindowsAzure.Messaging. A biblioteca de clientes WindowsAzure.Messaging serializa objetos usando o Microsoft.Azure.ServiceBus.InteropExtensions.DataContractBinarySerializer (serializador padrão) ou DataContractSerializer ao enviar mensagem. Essa classe fornece métodos de extensão para desserializar e recuperar o corpo dessas mensagens.
public static class MessageInteropExtensions
type MessageInteropExtensions = class
Public Module MessageInteropExtensions
- Herança
-
MessageInteropExtensions
Comentários
1. Se uma mensagem estiver sendo enviada e recebida usando esta biblioteca de clientes Microsoft.Azure.ServiceBus, os métodos de extensão abaixo não serão relevantes e não deverão ser usados.
2. Se essa biblioteca de clientes for usada para receber mensagens que foram enviadas usando a biblioteca de clientes WindowsAzure.Messaging e essa biblioteca (Microsoft.Azure.ServiceBus), os Usuários precisarão adicionar uma propriedade UserProperties User ao enviar a mensagem. Ao receber a mensagem, essa propriedade pode ser examinada para determinar se a mensagem era da biblioteca de clientes WindowsAzure.Messaging e, em caso afirmativo, use a mensagem. Método de extensão GetBody() para obter o corpo real associado à mensagem.
---------------------------------------------- Cenários para usar o método GetBody Extension: ---------------------------------------------- Se a mensagem foi construída usando a biblioteca de clientes WindowsAzure.Messaging da seguinte maneira:
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);
Em seguida, recupere os objetos originais usando essa biblioteca de clientes da seguinte maneira: (Por padrão Microsoft.Azure.ServiceBus.InteropExtensions.DataContractBinarySerializer , será usado para desserializar e recuperar o corpo. Se um serializador diferente do usado, passe o serializador explicitamente.)
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)}");
------------------------------------------------- Cenários para NÃO usar o método GetBody Extension: ------------------------------------------------- Se a mensagem foi enviada usando a biblioteca de clientes WindowsAzure.Messaging da seguinte maneira: var message4 = new BrokeredMessage(new MemoryStream(Encoding.UTF8.GetBytes("contoso")))) ; await messageSender.SendAsync(message4);
Em seguida, recupere os objetos originais usando esta biblioteca de clientes da seguinte maneira: var message4 = await messageReceiver.ReceiveAsync(); string returned = Encoding.UTF8.GetString(message4. Corpo); Como a mensagem foi enviada como Stream, nenhuma desserialização é necessária aqui.
Métodos
GetBody<T>(Message, XmlObjectSerializer) |
Desserializa o corpo de uma mensagem que foi serializada usando XmlObjectSerializer |
Aplica-se a
Azure SDK for .NET