Compartilhar via


MessageInteropExtensions Classe

Definição

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