Message 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.
Fornece acesso às propriedades necessárias para definir uma mensagem de Enfileiramento de Mensagens.
public ref class Message : System::ComponentModel::Component
public class Message : System.ComponentModel.Component
type Message = class
inherit Component
Public Class Message
Inherits Component
- Herança
Exemplos
O exemplo de código a seguir demonstra a formatação de um corpo de mensagem usando BinaryMessageFormatter.
using System;
using System.Messaging;
using System.Drawing;
using System.IO;
namespace MyProject
{
/// <summary>
/// Provides a container class for the example.
/// </summary>
public class MyNewQueue
{
//**************************************************
// Provides an entry point into the application.
//
// This example sends and receives a message from
// a queue.
//**************************************************
public static void Main()
{
// Create a new instance of the class.
MyNewQueue myNewQueue = new MyNewQueue();
// Create a queue on the local computer.
CreateQueue(".\\myQueue");
// Send a message to a queue.
myNewQueue.SendMessage();
// Receive a message from a queue.
myNewQueue.ReceiveMessage();
return;
}
//**************************************************
// Creates a new queue.
//**************************************************
public static void CreateQueue(string queuePath)
{
try
{
if(!MessageQueue.Exists(queuePath))
{
MessageQueue.Create(queuePath);
}
else
{
Console.WriteLine(queuePath + " already exists.");
}
}
catch (MessageQueueException e)
{
Console.WriteLine(e.Message);
}
}
//**************************************************
// Sends an image to a queue, using the BinaryMessageFormatter.
//**************************************************
public void SendMessage()
{
try{
// Create a new bitmap.
// The file must be in the \bin\debug or \bin\retail folder, or
// you must give a full path to its location.
Image myImage = Bitmap.FromFile("SentImage.bmp");
// Connect to a queue on the local computer.
MessageQueue myQueue = new MessageQueue(".\\myQueue");
Message myMessage = new Message(myImage, new BinaryMessageFormatter());
// Send the image to the queue.
myQueue.Send(myMessage);
}
catch(ArgumentException e)
{
Console.WriteLine(e.Message);
}
return;
}
//**************************************************
// Receives a message containing an image.
//**************************************************
public void ReceiveMessage()
{
try
{
// Connect to the a queue on the local computer.
MessageQueue myQueue = new MessageQueue(".\\myQueue");
// Set the formatter to indicate body contains an Order.
myQueue.Formatter = new BinaryMessageFormatter();
// Receive and format the message.
System.Messaging.Message myMessage = myQueue.Receive();
Bitmap myImage = (Bitmap)myMessage.Body;
// This will be saved in the \bin\debug or \bin\retail folder.
myImage.Save("ReceivedImage.bmp",System.Drawing.Imaging.ImageFormat.Bmp);
}
catch (MessageQueueException)
{
// Handle Message Queuing exceptions.
}
// Handle invalid serialization format.
catch (InvalidOperationException e)
{
Console.WriteLine(e.Message);
}
catch (IOException e)
{
// Handle file access exceptions.
}
// Catch other exceptions as necessary.
return;
}
}
}
Imports System.Messaging
Imports System.Drawing
Imports System.IO
Namespace MyProj
_
Public Class MyNewQueue
'**************************************************
' Provides an entry point into the application.
'
' This example sends and receives a message from
' a queue.
'**************************************************
Public Shared Sub Main()
' Create a new instance of the class.
Dim myNewQueue As New MyNewQueue()
' Create a queue on the local computer.
CreateQueue(".\myQueue")
' Send a message to a queue.
myNewQueue.SendMessage()
' Receive a message from a queue.
myNewQueue.ReceiveMessage()
Return
End Sub
'**************************************************
' Creates a new queue.
'**************************************************
Public Shared Sub CreateQueue(queuePath As String)
Try
If Not MessageQueue.Exists(queuePath) Then
MessageQueue.Create(queuePath)
Else
Console.WriteLine((queuePath + " already exists."))
End If
Catch e As MessageQueueException
Console.WriteLine(e.Message)
End Try
End Sub
'**************************************************
' Sends an image to a queue, using the BinaryMessageFormatter.
'**************************************************
Public Sub SendMessage()
Try
' Create a new bitmap.
' The file must be in the \bin\debug or \bin\retail folder, or
' you must give a full path to its location.
Dim myImage As Image = Bitmap.FromFile("SentImage.bmp")
' Connect to a queue on the local computer.
Dim myQueue As New MessageQueue(".\myQueue")
Dim myMessage As New Message(myImage, New BinaryMessageFormatter())
' Send the image to the queue.
myQueue.Send(myMessage)
Catch e As ArgumentException
Console.WriteLine(e.Message)
End Try
Return
End Sub
'**************************************************
' Receives a message containing an image.
'**************************************************
Public Sub ReceiveMessage()
Try
' Connect to the a queue on the local computer.
Dim myQueue As New MessageQueue(".\myQueue")
' Set the formatter to indicate body contains an Order.
myQueue.Formatter = New BinaryMessageFormatter()
' Receive and format the message.
Dim myMessage As System.Messaging.Message = myQueue.Receive()
Dim myImage As Bitmap = CType(myMessage.Body, Bitmap)
' This will be saved in the \bin\debug or \bin\retail folder.
myImage.Save("ReceivedImage.bmp", System.Drawing.Imaging.ImageFormat.Bmp)
'Catch
' Handle Message Queuing exceptions.
' Handle invalid serialization format.
Catch e As InvalidOperationException
Console.WriteLine(e.Message)
Catch e As IOException
End Try
' Handle file access exceptions.
' Catch other exceptions as necessary.
Return
End Sub
End Class
End Namespace 'MyProj
O exemplo de código a seguir demonstra a formatação de um corpo de mensagem usando XmlMessageFormatter.
#using <system.dll>
#using <system.messaging.dll>
#using <system.drawing.dll>
using namespace System;
using namespace System::Messaging;
using namespace System::Drawing;
using namespace System::IO;
ref class Order
{
public:
int orderId;
DateTime orderTime;
};
ref class MyNewQueue
{
public:
static void CreateQueue( String^ queuePath )
{
try
{
if ( !MessageQueue::Exists( queuePath ) )
{
MessageQueue::Create( queuePath );
}
else
{
Console::WriteLine( "{0} already exists.", queuePath );
}
}
catch ( MessageQueueException^ e )
{
Console::WriteLine( e->Message );
}
}
void SendMessage()
{
try
{
// Create a new order and set values.
Order^ sentOrder = gcnew Order;
sentOrder->orderId = 3;
sentOrder->orderTime = DateTime::Now;
// Connect to a queue on the local computer.
MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );
// Create the new order.
Message^ myMessage = gcnew Message( sentOrder );
// Send the order to the queue.
myQueue->Send( myMessage );
}
catch ( ArgumentException^ e )
{
Console::WriteLine( e->Message );
}
return;
}
void ReceiveMessage()
{
// Connect to the a queue on the local computer.
MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );
// Set the formatter to indicate body contains an Order.
array<Type^>^p = gcnew array<Type^>(1);
p[ 0 ] = Order::typeid;
myQueue->Formatter = gcnew XmlMessageFormatter( p );
try
{
// Receive and format the message.
Message^ myMessage = myQueue->Receive();
Order^ myOrder = dynamic_cast<Order^>(myMessage->Body);
// Display message information.
Console::WriteLine( "Order ID: {0}", myOrder->orderId );
Console::WriteLine( "Sent: {0}", myOrder->orderTime );
}
catch ( MessageQueueException^ )
{
// Handle Message Queuing exceptions.
}
// Handle invalid serialization format.
catch ( InvalidOperationException^ e )
{
Console::WriteLine( e->Message );
}
// Catch other exceptions as necessary.
return;
}
};
int main()
{
// Create a new instance of the class.
MyNewQueue^ myNewQueue = gcnew MyNewQueue;
// Create a queue on the local computer.
MyNewQueue::CreateQueue( ".\\myQueue" );
// Send a message to a queue.
myNewQueue->SendMessage();
// Receive a message from a queue.
myNewQueue->ReceiveMessage();
return 0;
}
using System;
using System.Messaging;
using System.Drawing;
using System.IO;
namespace MyProject
{
// The following example
// sends to a queue and receives from a queue.
public class Order
{
public int orderId;
public DateTime orderTime;
};
/// <summary>
/// Provides a container class for the example.
/// </summary>
public class MyNewQueue
{
//**************************************************
// Provides an entry point into the application.
//
// This example sends and receives a message from
// a queue.
//**************************************************
public static void Main()
{
// Create a new instance of the class.
MyNewQueue myNewQueue = new MyNewQueue();
// Create a queue on the local computer.
CreateQueue(".\\myQueue");
// Send a message to a queue.
myNewQueue.SendMessage();
// Receive a message from a queue.
myNewQueue.ReceiveMessage();
return;
}
//**************************************************
// Creates a new queue.
//**************************************************
public static void CreateQueue(string queuePath)
{
try
{
if(!MessageQueue.Exists(queuePath))
{
MessageQueue.Create(queuePath);
}
else
{
Console.WriteLine(queuePath + " already exists.");
}
}
catch (MessageQueueException e)
{
Console.WriteLine(e.Message);
}
}
//**************************************************
// Sends an Order to a queue.
//**************************************************
public void SendMessage()
{
try
{
// Create a new order and set values.
Order sentOrder = new Order();
sentOrder.orderId = 3;
sentOrder.orderTime = DateTime.Now;
// Connect to a queue on the local computer.
MessageQueue myQueue = new MessageQueue(".\\myQueue");
// Create the new order.
Message myMessage = new Message(sentOrder);
// Send the order to the queue.
myQueue.Send(myMessage);
}
catch(ArgumentException e)
{
Console.WriteLine(e.Message);
}
return;
}
//**************************************************
// Receives a message containing an order.
//**************************************************
public void ReceiveMessage()
{
// Connect to the a queue on the local computer.
MessageQueue myQueue = new MessageQueue(".\\myQueue");
// Set the formatter to indicate body contains an Order.
myQueue.Formatter = new XmlMessageFormatter(new Type[]
{typeof(MyProject.Order)});
try
{
// Receive and format the message.
Message myMessage = myQueue.Receive();
Order myOrder = (Order)myMessage.Body;
// Display message information.
Console.WriteLine("Order ID: " +
myOrder.orderId.ToString());
Console.WriteLine("Sent: " +
myOrder.orderTime.ToString());
}
catch (MessageQueueException)
{
// Handle Message Queuing exceptions.
}
// Handle invalid serialization format.
catch (InvalidOperationException e)
{
Console.WriteLine(e.Message);
}
// Catch other exceptions as necessary.
return;
}
}
}
Imports System.Messaging
Imports System.Drawing
Imports System.IO
' The following example
' sends to a queue and receives from a queue.
Public Class Order
Public orderId As Integer
Public orderTime As DateTime
End Class
' Provides a container class for the example.
Public Class MyNewQueue
' Provides an entry point into the application.
'
' This example sends and receives a message from
' a queue.
Public Shared Sub Main()
' Create a new instance of the class.
Dim myNewQueue As New MyNewQueue()
' Create a queue on the local computer.
CreateQueue(".\myQueue")
' Send a message to a queue.
myNewQueue.SendMessage()
' Receive a message from a queue.
myNewQueue.ReceiveMessage()
Return
End Sub
' Creates a new queue.
Public Shared Sub CreateQueue(queuePath As String)
Try
If Not MessageQueue.Exists(queuePath) Then
MessageQueue.Create(queuePath)
Else
Console.WriteLine((queuePath + " already exists."))
End If
Catch e As MessageQueueException
Console.WriteLine(e.Message)
End Try
End Sub
' Sends an Order to a queue.
Public Sub SendMessage()
Try
' Create a new order and set values.
Dim sentOrder As New Order()
sentOrder.orderId = 3
sentOrder.orderTime = DateTime.Now
' Connect to a queue on the local computer.
Dim myQueue As New MessageQueue(".\myQueue")
' Create the new order.
Dim myMessage As New Message(sentOrder)
' Send the order to the queue.
myQueue.Send(myMessage)
Catch e As ArgumentException
Console.WriteLine(e.Message)
End Try
Return
End Sub
' Receives a message containing an order.
Public Sub ReceiveMessage()
' Connect to the a queue on the local computer.
Dim myQueue As New MessageQueue(".\myQueue")
' Set the formatter to indicate body contains an Order.
myQueue.Formatter = New XmlMessageFormatter(New Type() {GetType(Order)})
Try
' Receive and format the message.
Dim myMessage As Message = myQueue.Receive()
Dim myOrder As Order = CType(myMessage.Body, Order)
' Display message information.
Console.WriteLine(("Order ID: " + myOrder.orderId.ToString()))
Console.WriteLine(("Sent: " + myOrder.orderTime.ToString()))
' Handle invalid serialization format.
Catch e As InvalidOperationException
Console.WriteLine(e.Message)
End Try
' Catch other exceptions as necessary.
Return
End Sub
End Class
Comentários
Use a Message classe para espiar ou receber mensagens de uma fila ou para ter um controle fino sobre as propriedades da mensagem ao enviar uma mensagem para uma fila.
MessageQueueusa a Message classe quando ela espia ou recebe mensagens de filas, pois os métodos e MessageQueue.Receive os MessageQueue.Peek métodos criam uma nova instância da Message classe e definem as propriedades da instância. As Message propriedades somente leitura da classe se aplicam à recuperação de mensagens de uma fila, enquanto as propriedades de leitura/gravação se aplicam ao envio e à recuperação de mensagens. Quando MessageQueue espia ou recebe uma mensagem de uma fila, sua MessageReadPropertyFilter propriedade determina quais das propriedades da mensagem são recuperadas.
O MessageQueue método da Send classe permite que você especifique qualquer tipo de objeto para uma mensagem que está sendo enviada para essa fila. Você pode usar a MessageQueue propriedade da DefaultPropertiesToSend instância para especificar as configurações de mensagens genéricas enviadas para a fila. Os tipos de configurações incluem formator, rótulo, criptografia e autenticação. Você também pode especificar valores para os membros apropriados DefaultPropertiesToSend ao coordenar seu aplicativo de mensagens para responder a mensagens de reconhecimento e relatório. Usar uma Message instância para enviar uma mensagem para a fila oferece a flexibilidade de acessar e modificar muitas dessas propriedades , seja para uma única mensagem ou em uma base de mensagem por mensagem. Message as propriedades têm precedência sobre DefaultPropertiesToSend.
Os dados da mensagem são armazenados na Body propriedade e, em menor grau, nas propriedades e Extension nas AppSpecific propriedades. Quando os dados da mensagem são criptografados, serializados ou desserializados, somente o conteúdo da Body propriedade é afetado.
O conteúdo da Body propriedade é serializado quando a mensagem é enviada, usando a Formatter propriedade especificada. O conteúdo serializado é encontrado na BodyStream propriedade. Você também pode definir a BodyStream propriedade diretamente, por exemplo, para enviar um arquivo como o conteúdo de dados de uma mensagem. Você pode alterar as propriedades ou Formatter a Body qualquer momento antes de enviar a mensagem e os dados serão serializados adequadamente quando você chamar Send.
As propriedades definidas pela MessageQueue.DefaultPropertiesToSend propriedade se aplicam somente a mensagens que não são do tipo Message. Se você especificar a DefaultPropertiesToSend propriedade para um MessageQueue, as propriedades nomeadas de forma idêntica em uma Message instância enviada para essa fila farão com que essas propriedades padrão sejam ignoradas.
Para obter uma lista de valores de propriedade iniciais de uma instância de Message, consulte o construtor Message.
Construtores
| Nome | Description |
|---|---|
| Message() |
Inicializa uma nova instância da Message classe com um corpo vazio. |
| Message(Object, IMessageFormatter) |
Inicializa uma nova instância da Message classe usando o formatador especificado para serializar o objeto especificado no corpo da mensagem. |
| Message(Object) |
Inicializa uma nova instância da Message classe, usando o XmlMessageFormatter para serializar o objeto especificado no corpo da mensagem. |
Campos
| Nome | Description |
|---|---|
| InfiniteTimeout |
Especifica que não existe tempo limite. |
Propriedades
| Nome | Description |
|---|---|
| AcknowledgeType |
Obtém ou define o tipo de mensagem de confirmação a ser retornado ao aplicativo de envio. |
| Acknowledgment |
Obtém a classificação de confirmação que essa mensagem representa. |
| AdministrationQueue |
Obtém ou define a fila que recebe as mensagens de confirmação geradas pelo Enfileiramento de Mensagens. |
| AppSpecific |
Obtém ou define informações adicionais específicas do aplicativo. |
| ArrivedTime |
Obtém a hora em que a mensagem chegou na fila de destino. |
| AttachSenderId |
Obtém ou define um valor que indica se a ID do remetente deve ser anexada à mensagem. |
| Authenticated |
Obtém um valor que indica se a mensagem foi autenticada. |
| AuthenticationProviderName |
Obtém ou define o nome do provedor criptográfico usado para gerar a assinatura digital da mensagem. |
| AuthenticationProviderType |
Obtém ou define o tipo de provedor criptográfico usado para gerar a assinatura digital da mensagem. |
| Body |
Obtém ou define o conteúdo da mensagem. |
| BodyStream |
Obtém ou define as informações no corpo da mensagem. |
| BodyType |
Obtém ou define o tipo de dados que o corpo da mensagem contém. |
| CanRaiseEvents |
Obtém um valor que indica se o componente pode gerar um evento. (Herdado de Component) |
| ConnectorType |
Obtém ou define um valor que indica que algumas propriedades de mensagem normalmente definidas pelo Enfileiramento de Mensagens foram definidas pelo aplicativo de envio. |
| Container |
Obtém o IContainer que contém o Component. (Herdado de Component) |
| CorrelationId |
Obtém ou define o identificador de mensagem usado por mensagens de confirmação, relatório e resposta para fazer referência à mensagem original. |
| DesignMode |
Obtém um valor que indica se o Component está no modo de design no momento. (Herdado de Component) |
| DestinationQueue |
Obtém a fila de destino pretendida para uma mensagem. |
| DestinationSymmetricKey |
Obtém ou define a chave simétrica usada para criptografar mensagens criptografadas pelo aplicativo ou mensagens enviadas para filas estrangeiras. |
| DigitalSignature |
Obtém ou define a assinatura digital que o Enfileiramento de Mensagens usa para autenticar a mensagem. |
| EncryptionAlgorithm |
Obtém ou define o algoritmo de criptografia usado para criptografar o corpo de uma mensagem privada. |
| Events |
Obtém a lista de manipuladores de eventos anexados a isso Component. (Herdado de Component) |
| Extension |
Obtém ou define informações adicionais definidas pelo aplicativo associadas à mensagem. |
| Formatter |
Obtém ou define o formatador usado para serializar um objeto ou desserializar um objeto do corpo da mensagem. |
| HashAlgorithm |
Obtém ou define o algoritmo de hash que o Enfileiramento de Mensagens usa ao autenticar uma mensagem ou criar uma assinatura digital para uma mensagem. |
| Id |
Obtém o identificador da mensagem. |
| IsFirstInTransaction |
Obtém um valor que indica se a mensagem foi a primeira mensagem enviada em uma transação. |
| IsLastInTransaction |
Obtém um valor que indica se a mensagem foi a última mensagem enviada em uma transação. |
| Label |
Obtém ou define uma cadeia de caracteres Unicode definida pelo aplicativo que descreve a mensagem. |
| LookupId |
Introduzido no MSMQ 3.0. Obtém o identificador de pesquisa da mensagem. |
| MessageType |
Obtém o tipo de mensagem: |
| Priority |
Obtém ou define a prioridade da mensagem, que determina onde na fila a mensagem é colocada. |
| Recoverable |
Obtém ou define um valor que indica se a mensagem é garantida para ser entregue no caso de uma falha do computador ou problema de rede. |
| ResponseQueue |
Obtém ou define a fila que recebe mensagens de resposta geradas pelo aplicativo. |
| SecurityContext |
Obtém ou define o contexto de segurança de uma mensagem. |
| SenderCertificate |
Obtém ou define o certificado de segurança usado para autenticar mensagens. |
| SenderId |
Obtém o identificador do usuário de envio. |
| SenderVersion |
Obtém a versão do Enfileiramento de Mensagens usada para enviar a mensagem. |
| SentTime |
Obtém a data e a hora no computador de envio que a mensagem foi enviada pelo gerenciador da fila de origem. |
| Site |
Obtém ou define o ISiteComponent. (Herdado de Component) |
| SourceMachine |
Obtém o computador do qual a mensagem se originou. |
| TimeToBeReceived |
Obtém ou define o tempo máximo para que a mensagem seja recebida da fila de destino. |
| TimeToReachQueue |
Obtém ou define a quantidade máxima de tempo para a mensagem chegar à fila. |
| TransactionId |
Obtém o identificador da transação da qual a mensagem fazia parte. |
| TransactionStatusQueue |
Obtém a fila de status da transação no computador de origem. |
| UseAuthentication |
Obtém ou define um valor que indica se a mensagem foi (ou deve ser) autenticada antes de ser enviada. |
| UseDeadLetterQueue |
Obtém ou define um valor que indica se uma cópia da mensagem que não pôde ser entregue deve ser enviada para uma fila de mensagens mortas. |
| UseEncryption |
Obtém ou define um valor que indica se a mensagem deve ser privada. |
| UseJournalQueue |
Obtém ou define um valor que indica se uma cópia da mensagem deve ser mantida em um diário do computador no computador de origem. |
| UseTracing |
Obtém ou define um valor que indica se uma mensagem deve ser rastreada conforme ela se move em direção à fila de destino. |
Métodos
| Nome | Description |
|---|---|
| CreateObjRef(Type) |
Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
| Dispose() |
Libera todos os recursos usados pelo Component. (Herdado de Component) |
| Dispose(Boolean) |
Libera os recursos não gerenciados usados pelo Component e, opcionalmente, libera os recursos gerenciados. (Herdado de Component) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
| GetLifetimeService() |
Obsoleto.
Recupera o objeto de serviço de tempo de vida atual que controla a política de tempo de vida para essa instância. (Herdado de MarshalByRefObject) |
| GetService(Type) |
Retorna um objeto que representa um serviço fornecido pelo Component ou por sua Container. (Herdado de Component) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| InitializeLifetimeService() |
Obsoleto.
Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida dessa instância. (Herdado de MarshalByRefObject) |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (Herdado de Object) |
| MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto atual MarshalByRefObject . (Herdado de MarshalByRefObject) |
| ToString() |
Retorna um String que contém o nome do Component, se houver. Esse método não deve ser substituído. (Herdado de Component) |
Eventos
| Nome | Description |
|---|---|
| Disposed |
Ocorre quando o componente é descartado por uma chamada para o Dispose() método. (Herdado de Component) |