Message Classe

Definição

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: Normal, Acknowledgment, ou Report.

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)

Aplica-se a

Ver também