Message Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fornece acesso às propriedades necessárias para definir uma mensagem de Fila 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 seguinte exemplo de código demonstra a formatação do corpo de uma 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 seguinte exemplo de código demonstra a formatação do corpo de uma 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
Observações
Use a Message classe para espreitar ou receber mensagens de uma fila, ou para ter controlo fino sobre as propriedades das mensagens ao enviar uma mensagem para uma fila.
MessageQueue usa a Message classe quando esta faz peeks ou recebe mensagens de filas, porque ambos os MessageQueue.Peek métodos e MessageQueue.Receive criam uma nova instância da Message classe e definem as propriedades da instância. As Message propriedades de apenas leitura da classe aplicam-se à recuperação de mensagens de uma fila, enquanto as propriedades de leitura/escrita aplicam-se ao envio e recuperação de mensagens. Quando MessageQueue espreita ou recebe uma mensagem de uma fila, a sua MessageReadPropertyFilter propriedade determina quais das propriedades da mensagem são recuperadas.
O MessageQueue método da Send classe permite especificar qualquer tipo de objeto para uma mensagem enviada para essa fila. Pode usar a MessageQueue propriedade da DefaultPropertiesToSend instância para especificar definições para mensagens genéricas enviadas para a fila. Os tipos de definições incluem formatador, etiqueta, encriptação e autenticação. Também pode especificar valores para os membros apropriados DefaultPropertiesToSend quando coordenar a sua aplicação de mensagens para responder a mensagens de confirmação e reporte. Usar uma Message instância para enviar uma mensagem para a fila dá-lhe flexibilidade para aceder e modificar muitas destas propriedades – seja para uma única mensagem ou mensagem a mensagem. Message As propriedades têm precedência sobre DefaultPropertiesToSend.
Os dados da mensagem são armazenados na propriedade e, em menor grau, nas BodyAppSpecific propriedades e.Extension Quando os dados da mensagem são encriptados, serializados ou desserializados, apenas o conteúdo da Body propriedade é afetado.
O conteúdo da Body propriedade é serializado quando a mensagem é enviada, usando a Formatter propriedade que especifica. Os conteúdos serializados encontram-se na BodyStream propriedade. Também pode definir a BodyStream propriedade diretamente, por exemplo, para enviar um ficheiro como conteúdo de dados de uma mensagem. Pode alterar as Body propriedades de ou Formatter a qualquer momento antes de enviar a mensagem, e os dados serão serializados adequadamente quando chamar Send.
As propriedades definidas pela MessageQueue.DefaultPropertiesToSend propriedade aplicam-se apenas a mensagens que não são do tipo Message. Se especificar a DefaultPropertiesToSend propriedade para um MessageQueue, as propriedades com nomes idênticos numa Message instância enviadas para essa fila fazem com que estas propriedades padrão sejam ignoradas.
Para obter uma lista de valores das propriedades iniciais de uma instância de Message, consulte o construtor Message.
Construtores
| Name | Description |
|---|---|
| Message() |
Inicializa uma nova instância da Message classe com o corpo vazio. |
| Message(Object, IMessageFormatter) |
Inicializa uma nova instância da Message classe usando o formateador 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
| Name | Description |
|---|---|
| InfiniteTimeout |
Especifica que não existe qualquer tempo de pausa. |
Propriedades
| Name | Description |
|---|---|
| AcknowledgeType |
Recebe ou define o tipo de mensagem de confirmação a ser devolvida à aplicação enviante. |
| Acknowledgment |
Recebe a classificação de acusação de reconhecimento que esta mensagem representa. |
| AdministrationQueue |
Recebe ou define a fila que recebe as mensagens de confirmação que a Fila de Mensagens gera. |
| AppSpecific |
Obtém ou define informação adicional específica para a aplicação. |
| ArrivedTime |
Obtém a hora em que a mensagem chegou na fila de destino. |
| AttachSenderId |
Recebe ou define um valor que indica se o ID do remetente deve ser associado à mensagem. |
| Authenticated |
Recebe um valor que indica se a mensagem foi autenticada. |
| AuthenticationProviderName |
Obtém ou define o nome do fornecedor criptográfico utilizado para gerar a assinatura digital da mensagem. |
| AuthenticationProviderType |
Obtém ou define o tipo de fornecedor criptográfico usado para gerar a assinatura digital da mensagem. |
| Body |
Obtém ou define o conteúdo da mensagem. |
| BodyStream |
Obtém ou coloca a informação 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 |
Recebe ou define um valor que indica que algumas propriedades de mensagem normalmente definidas pela Fila de Mensagens foram definidas pela aplicação enviante. |
| 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 reconhecimento, relatório e resposta para referenciar a mensagem original. |
| DesignMode |
Obtém um valor que indica se o Component está atualmente em modo de design. (Herdado de Component) |
| DestinationQueue |
Recebe a fila de destino prevista para uma mensagem. |
| DestinationSymmetricKey |
Obtém ou define a chave simétrica usada para encriptar mensagens encriptadas pela aplicação ou mensagens enviadas para filas estrangeiras. |
| DigitalSignature |
Obtém ou define a assinatura digital que a Fila de Mensagens usa para autenticar a mensagem. |
| EncryptionAlgorithm |
Obtém ou define o algoritmo de encriptação usado para encriptar o corpo de uma mensagem privada. |
| Events |
Obtém a lista de gestores de eventos que estão ligados a isto Component. (Herdado de Component) |
| Extension |
Obtém ou define informação adicional definida pela aplicação associada à mensagem. |
| Formatter |
Obtém ou define o formatador usado para serializar um objeto em ou desserializar um objeto a partir do corpo da mensagem. |
| HashAlgorithm |
Obtém ou define o algoritmo de hash que a Fila de Mensagens usa ao autenticar uma mensagem ou criar uma assinatura digital para uma mensagem. |
| Id |
Obtém o identificador da mensagem. |
| IsFirstInTransaction |
Recebe um valor que indica se a mensagem foi a primeira enviada numa transação. |
| IsLastInTransaction |
Recebe um valor que indica se a mensagem foi a última enviada numa transação. |
| Label |
Obtém ou define uma cadeia Unicode definida pela aplicação 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 |
Recebe ou define a prioridade da mensagem, que determina onde na fila a mensagem está colocada. |
| Recoverable |
Recebe ou define um valor que indica se a mensagem está garantida para ser entregue em caso de falha informática ou problema de rede. |
| ResponseQueue |
Recebe ou define a fila que recebe as mensagens de resposta geradas pela aplicação. |
| SecurityContext |
Obtém ou define o contexto de segurança para uma mensagem. |
| SenderCertificate |
Obtém ou define o certificado de segurança usado para autenticar mensagens. |
| SenderId |
Obtém o identificador do utilizador que enviou. |
| SenderVersion |
Recebe a versão da Fila de Mensagens usada para enviar a mensagem. |
| SentTime |
Obtém a data e hora no computador de envio em que a mensagem foi enviada pelo gestor de fila de origem. |
| Site |
Obtém ou define o ISite do Component. (Herdado de Component) |
| SourceMachine |
Obtém o computador de onde 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 o tempo máximo para a mensagem chegar à fila. |
| TransactionId |
Obtém o identificador da transação da qual a mensagem fazia parte. |
| TransactionStatusQueue |
Recebe a fila de estado da transação no computador de origem. |
| UseAuthentication |
Recebe ou define um valor que indica se a mensagem foi (ou deve ser) autenticada antes de ser enviada. |
| UseDeadLetterQueue |
Recebe 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 letras mortas. |
| UseEncryption |
Recebe ou define um valor que indica se deve tornar a mensagem privada. |
| UseJournalQueue |
Recebe ou define um valor que indica se uma cópia da mensagem deve ser mantida num diário de máquina no computador de origem. |
| UseTracing |
Recebe ou define um valor que indica se deve rastrear uma mensagem à medida que esta se aproxima da fila de destino. |
Métodos
| Name | Description |
|---|---|
| CreateObjRef(Type) |
Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
| Dispose() |
Liberta todos os recursos utilizados pelo Component. (Herdado de Component) |
| Dispose(Boolean) |
Liberta os recursos não geridos usados pelo Component e opcionalmente liberta os recursos geridos. (Herdado de Component) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetLifetimeService() |
Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso. (Herdado de MarshalByRefObject) |
| GetService(Type) |
Devolve um objeto que representa um serviço fornecido pelo Component ou pelo seu Container. (Herdado de Component) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| InitializeLifetimeService() |
Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso. (Herdado de MarshalByRefObject) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto atual MarshalByRefObject . (Herdado de MarshalByRefObject) |
| ToString() |
Devolve a String contendo o nome do Component, se existir. Este método não deve ser ultrapassado. (Herdado de Component) |
evento
| Name | Description |
|---|---|
| Disposed |
Ocorre quando o componente é eliminado por uma chamada ao Dispose() método. (Herdado de Component) |