Message Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет доступ к свойствам, необходимым для определения сообщения очереди сообщений.
public ref class Message : System::ComponentModel::Component
public class Message : System.ComponentModel.Component
type Message = class
inherit Component
Public Class Message
Inherits Component
- Наследование
Примеры
В следующем примере кода показано форматирование текста сообщения с помощью 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
В следующем примере кода показано форматирование текста сообщения с помощью 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
Комментарии
Message Используйте класс для просмотра или получения сообщений из очереди или для точного контроля над свойствами сообщения при отправке сообщения в очередь.
MessageQueue Message использует класс при просмотре или получении сообщений из очередей, так как MessageQueue.PeekMessageQueue.Receive и методы создают новый экземпляр Message класса и задают свойства экземпляра. Message Свойства класса, доступные только для чтения, применяются к получению сообщений из очереди, а свойства чтения и записи применяются к отправке и извлечению сообщений. При MessageQueue просмотре или получении сообщения из очереди его MessageReadPropertyFilter свойство определяет, какие свойства сообщения извлекаются.
Метод MessageQueue класса Send позволяет указать любой тип объекта для сообщения, отправляемого в эту очередь. Свойство экземпляра DefaultPropertiesToSend можно использовать MessageQueue для указания параметров универсальных сообщений, отправленных в очередь. Типы параметров включают форматировщик, метку, шифрование и проверку подлинности. Вы также можете указать значения для соответствующих DefaultPropertiesToSend членов, когда вы координируете приложение обмена сообщениями для реагирования на подтверждения и сообщения отчетов. Использование экземпляра Message для отправки сообщения в очередь обеспечивает гибкость доступа и изменения многих из этих свойств — либо для одного сообщения, либо на основе сообщения по сообщению. Message свойства имеют приоритет над DefaultPropertiesToSend.
Данные сообщения хранятся в Body свойстве и в меньшей степени, AppSpecific а также Extension свойства. Если данные сообщения шифруются, сериализуются или десериализируются, затрагиваются только содержимое Body свойства.
Содержимое Body свойства сериализуется при отправке сообщения с помощью указанного Formatter свойства. Сериализованное содержимое находится в свойстве BodyStream . Можно также задать BodyStream свойство напрямую, например, чтобы отправить файл в виде содержимого сообщения. Вы можете изменить или Formatter свойства Body в любое время перед отправкой сообщения, и данные будут сериализованы соответствующим образом при вызовеSend.
Свойства, определенные свойством MessageQueue.DefaultPropertiesToSend , применяются только к сообщениям, которые не относятся к типам Message. Если указать DefaultPropertiesToSend свойство для MessageQueueобъекта, то идентичные именованные свойства в экземпляре, отправляемые Message в эту очередь, вызывают пропускать эти свойства по умолчанию.
Список начальных значений свойств для экземпляра Messageсм. в конструкторе Message .
Конструкторы
| Имя | Описание |
|---|---|
| Message() |
Инициализирует новый экземпляр Message класса пустым текстом. |
| Message(Object, IMessageFormatter) |
Инициализирует новый экземпляр Message класса с помощью указанного модуля форматирования для сериализации указанного объекта в текст сообщения. |
| Message(Object) |
Инициализирует новый экземпляр класса с помощью XmlMessageFormatter сериализации указанного Message объекта в текст сообщения. |
Поля
| Имя | Описание |
|---|---|
| InfiniteTimeout |
Указывает, что время ожидания не существует. |
Свойства
| Имя | Описание |
|---|---|
| AcknowledgeType |
Возвращает или задает тип сообщения подтверждения, возвращаемого в отправляющее приложение. |
| Acknowledgment |
Получает классификацию подтверждения, представляющего это сообщение. |
| AdministrationQueue |
Получает или задает очередь, которая получает сообщения подтверждения, создаваемые очередью сообщений. |
| AppSpecific |
Возвращает или задает дополнительные сведения, относящиеся к приложению. |
| ArrivedTime |
Возвращает время прибытия сообщения в очередь назначения. |
| AttachSenderId |
Возвращает или задает значение, указывающее, должен ли идентификатор отправителя быть присоединен к сообщению. |
| Authenticated |
Возвращает значение, указывающее, было ли выполнено проверка подлинности сообщения. |
| AuthenticationProviderName |
Возвращает или задает имя поставщика шифрования, используемого для создания цифровой подписи сообщения. |
| AuthenticationProviderType |
Возвращает или задает тип поставщика шифрования, используемого для создания цифровой подписи сообщения. |
| Body |
Возвращает или задает содержимое сообщения. |
| BodyStream |
Возвращает или задает сведения в тексте сообщения. |
| BodyType |
Возвращает или задает тип данных, содержащихся в тексте сообщения. |
| CanRaiseEvents |
Возвращает значение, указывающее, может ли компонент вызвать событие. (Унаследовано от Component) |
| ConnectorType |
Возвращает или задает значение, указывающее, что некоторые свойства сообщения, обычно заданные очередью сообщений, были заданы отправляющим приложением. |
| Container |
Возвращает объект IContainer , содержащий Componentобъект . (Унаследовано от Component) |
| CorrelationId |
Возвращает или задает идентификатор сообщения, используемый подтверждением, отчетом и ответными сообщениями для ссылки на исходное сообщение. |
| DesignMode |
Возвращает значение, указывающее, находится ли текущий Component режим разработки. (Унаследовано от Component) |
| DestinationQueue |
Возвращает целевую очередь для сообщения. |
| DestinationSymmetricKey |
Возвращает или задает симметричный ключ, используемый для шифрования зашифрованных приложений сообщений или сообщений, отправленных в иностранные очереди. |
| DigitalSignature |
Возвращает или задает цифровую подпись, которую очередь сообщений использует для проверки подлинности сообщения. |
| EncryptionAlgorithm |
Возвращает или задает алгоритм шифрования, используемый для шифрования текста закрытого сообщения. |
| Events |
Возвращает список обработчиков событий, подключенных к этому Component. (Унаследовано от Component) |
| Extension |
Возвращает или задает дополнительные сведения, определенные приложением, связанные с сообщением. |
| Formatter |
Возвращает или задает средство форматирования, используемое для сериализации объекта в объект или десериализации объекта из текста сообщения. |
| HashAlgorithm |
Возвращает или задает алгоритм хэширования, который очередь сообщений использует при проверке подлинности сообщения или создании цифровой подписи для сообщения. |
| Id |
Возвращает идентификатор сообщения. |
| IsFirstInTransaction |
Возвращает значение, указывающее, было ли сообщение первым сообщением, отправленным в транзакцию. |
| IsLastInTransaction |
Возвращает значение, указывающее, было ли сообщение последним сообщением, отправленным в транзакцию. |
| Label |
Возвращает или задает определяемую приложением строку Юникода, описывающую сообщение. |
| LookupId |
Представлено в MSMQ 3.0. Возвращает идентификатор подстановки сообщения. |
| MessageType |
Возвращает тип сообщения: |
| Priority |
Возвращает или задает приоритет сообщения, который определяет место размещения сообщения в очереди. |
| Recoverable |
Возвращает или задает значение, указывающее, гарантируется ли доставка сообщения в случае сбоя компьютера или проблемы сети. |
| ResponseQueue |
Возвращает или задает очередь, которая получает сообщения ответа, созданные приложением. |
| SecurityContext |
Возвращает или задает контекст безопасности для сообщения. |
| SenderCertificate |
Возвращает или задает сертификат безопасности, используемый для проверки подлинности сообщений. |
| SenderId |
Возвращает идентификатор отправляющего пользователя. |
| SenderVersion |
Возвращает версию очереди сообщений, используемую для отправки сообщения. |
| SentTime |
Возвращает дату и время на компьютере отправки сообщения диспетчером исходной очереди. |
| Site |
Возвращает или задает ISite объект Component. (Унаследовано от Component) |
| SourceMachine |
Возвращает компьютер, из которого возникло сообщение. |
| TimeToBeReceived |
Возвращает или задает максимальное время получения сообщения из конечной очереди. |
| TimeToReachQueue |
Возвращает или задает максимальное время для достижения очереди сообщения. |
| TransactionId |
Возвращает идентификатор транзакции, в которой сообщение было частью. |
| TransactionStatusQueue |
Возвращает очередь состояния транзакции на исходном компьютере. |
| UseAuthentication |
Возвращает или задает значение, указывающее, было ли сообщение (или должно быть) проверено перед отправкой. |
| UseDeadLetterQueue |
Возвращает или задает значение, указывающее, должна ли быть отправлена копия сообщения, которая не может быть доставлена в очередь недоставленных писем. |
| UseEncryption |
Возвращает или задает значение, указывающее, следует ли сделать сообщение закрытым. |
| UseJournalQueue |
Возвращает или задает значение, указывающее, должна ли копия сообщения храниться в журнале компьютера на исходном компьютере. |
| UseTracing |
Возвращает или задает значение, указывающее, следует ли трассировать сообщение по мере перемещения в очередь назначения. |
Методы
| Имя | Описание |
|---|---|
| CreateObjRef(Type) |
Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом. (Унаследовано от MarshalByRefObject) |
| Dispose() |
Освобождает все ресурсы, используемые параметром Component. (Унаследовано от Component) |
| Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые Component и при необходимости освобождает управляемые ресурсы. (Унаследовано от Component) |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetLifetimeService() |
Устаревшие..
Извлекает текущий объект службы времени существования, который управляет политикой времени существования для этого экземпляра. (Унаследовано от MarshalByRefObject) |
| GetService(Type) |
Возвращает объект, представляющий службу, предоставляемую Component или ее Container. (Унаследовано от Component) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| InitializeLifetimeService() |
Устаревшие..
Получает объект службы времени существования для управления политикой времени существования для этого экземпляра. (Унаследовано от MarshalByRefObject) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| MemberwiseClone(Boolean) |
Создает неглубокую копию текущего MarshalByRefObject объекта. (Унаследовано от MarshalByRefObject) |
| ToString() |
String Возвращает имя, содержащее имя , если таковое Componentимеется. Этот метод не должен быть переопределен. (Унаследовано от Component) |
События
| Имя | Описание |
|---|---|
| Disposed |
Происходит при удалении компонента вызовом Dispose() метода. (Унаследовано от Component) |