MessageQueue Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет доступ к очереди на сервере MSMQ.
public ref class MessageQueue : System::ComponentModel::Component, System::Collections::IEnumerable
[System.ComponentModel.TypeConverter(typeof(System.Messaging.Design.MessageQueueConverter))]
public class MessageQueue : System.ComponentModel.Component, System.Collections.IEnumerable
[System.ComponentModel.TypeConverter(typeof(System.Messaging.Design.MessageQueueConverter))]
[System.Messaging.MessagingDescription("MessageQueueDesc")]
public class MessageQueue : System.ComponentModel.Component, System.Collections.IEnumerable
[<System.ComponentModel.TypeConverter(typeof(System.Messaging.Design.MessageQueueConverter))>]
type MessageQueue = class
inherit Component
interface IEnumerable
[<System.ComponentModel.TypeConverter(typeof(System.Messaging.Design.MessageQueueConverter))>]
[<System.Messaging.MessagingDescription("MessageQueueDesc")>]
type MessageQueue = class
inherit Component
interface IEnumerable
Public Class MessageQueue
Inherits Component
Implements IEnumerable
- Наследование
- Атрибуты
- Реализации
Примеры
В следующем примере кода создаются новые MessageQueue объекты с использованием различных типов синтаксиса имен пути. В каждом случае он отправляет сообщение в очередь, путь которой определен в конструкторе.
#using <system.dll>
#using <system.messaging.dll>
using namespace System;
using namespace System::Messaging;
ref class MyNewQueue
{
public:
// References public queues.
void SendPublic()
{
MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );
myQueue->Send( "Public queue by path name." );
return;
}
// References private queues.
void SendPrivate()
{
MessageQueue^ myQueue = gcnew MessageQueue( ".\\Private$\\myQueue" );
myQueue->Send( "Private queue by path name." );
return;
}
// References queues by label.
void SendByLabel()
{
MessageQueue^ myQueue = gcnew MessageQueue( "Label:TheLabel" );
myQueue->Send( "Queue by label." );
return;
}
// References queues by format name.
void SendByFormatName()
{
MessageQueue^ myQueue = gcnew MessageQueue( "FormatName:Public=5A5F7535-AE9A-41d4 -935C-845C2AFF7112" );
myQueue->Send( "Queue by format name." );
return;
}
// References computer journal queues.
void MonitorComputerJournal()
{
MessageQueue^ computerJournal = gcnew MessageQueue( ".\\Journal$" );
while ( true )
{
Message^ journalMessage = computerJournal->Receive();
// Process the journal message.
}
}
// References queue journal queues.
void MonitorQueueJournal()
{
MessageQueue^ queueJournal = gcnew MessageQueue( ".\\myQueue\\Journal$" );
while ( true )
{
Message^ journalMessage = queueJournal->Receive();
// Process the journal message.
}
}
// References dead-letter queues.
void MonitorDeadLetter()
{
MessageQueue^ deadLetter = gcnew MessageQueue( ".\\DeadLetter$" );
while ( true )
{
Message^ deadMessage = deadLetter->Receive();
// Process the dead-letter message.
}
}
// References transactional dead-letter queues.
void MonitorTransactionalDeadLetter()
{
MessageQueue^ TxDeadLetter = gcnew MessageQueue( ".\\XactDeadLetter$" );
while ( true )
{
Message^ txDeadLetter = TxDeadLetter->Receive();
// Process the transactional dead-letter message.
}
}
};
//*************************************************
// Provides an entry point into the application.
//
// This example demonstrates several ways to set
// a queue's path.
//*************************************************
int main()
{
// Create a new instance of the class.
MyNewQueue^ myNewQueue = gcnew MyNewQueue;
myNewQueue->SendPublic();
myNewQueue->SendPrivate();
myNewQueue->SendByLabel();
myNewQueue->SendByFormatName();
myNewQueue->MonitorComputerJournal();
myNewQueue->MonitorQueueJournal();
myNewQueue->MonitorDeadLetter();
myNewQueue->MonitorTransactionalDeadLetter();
return 0;
}
using System;
using System.Messaging;
namespace MyProject
{
/// <summary>
/// Provides a container class for the example.
/// </summary>
public class MyNewQueue
{
//**************************************************
// Provides an entry point into the application.
//
// This example demonstrates several ways to set
// a queue's path.
//**************************************************
public static void Main()
{
// Create a new instance of the class.
MyNewQueue myNewQueue = new MyNewQueue();
myNewQueue.SendPublic();
myNewQueue.SendPrivate();
myNewQueue.SendByLabel();
myNewQueue.SendByFormatName();
myNewQueue.MonitorComputerJournal();
myNewQueue.MonitorQueueJournal();
myNewQueue.MonitorDeadLetter();
myNewQueue.MonitorTransactionalDeadLetter();
return;
}
// References public queues.
public void SendPublic()
{
MessageQueue myQueue = new MessageQueue(".\\myQueue");
myQueue.Send("Public queue by path name.");
return;
}
// References private queues.
public void SendPrivate()
{
MessageQueue myQueue = new
MessageQueue(".\\Private$\\myQueue");
myQueue.Send("Private queue by path name.");
return;
}
// References queues by label.
public void SendByLabel()
{
MessageQueue myQueue = new MessageQueue("Label:TheLabel");
myQueue.Send("Queue by label.");
return;
}
// References queues by format name.
public void SendByFormatName()
{
MessageQueue myQueue = new
MessageQueue("FormatName:Public=5A5F7535-AE9A-41d4" +
"-935C-845C2AFF7112");
myQueue.Send("Queue by format name.");
return;
}
// References computer journal queues.
public void MonitorComputerJournal()
{
MessageQueue computerJournal = new
MessageQueue(".\\Journal$");
while(true)
{
Message journalMessage = computerJournal.Receive();
// Process the journal message.
}
}
// References queue journal queues.
public void MonitorQueueJournal()
{
MessageQueue queueJournal = new
MessageQueue(".\\myQueue\\Journal$");
while(true)
{
Message journalMessage = queueJournal.Receive();
// Process the journal message.
}
}
// References dead-letter queues.
public void MonitorDeadLetter()
{
MessageQueue deadLetter = new
MessageQueue(".\\DeadLetter$");
while(true)
{
Message deadMessage = deadLetter.Receive();
// Process the dead-letter message.
}
}
// References transactional dead-letter queues.
public void MonitorTransactionalDeadLetter()
{
MessageQueue TxDeadLetter = new
MessageQueue(".\\XactDeadLetter$");
while(true)
{
Message txDeadLetter = TxDeadLetter.Receive();
// Process the transactional dead-letter message.
}
}
}
}
Imports System.Messaging
Public Class MyNewQueue
' Provides an entry point into the application.
'
' This example demonstrates several ways to set
' a queue's path.
Public Shared Sub Main()
' Create a new instance of the class.
Dim myNewQueue As New MyNewQueue()
myNewQueue.SendPublic()
myNewQueue.SendPrivate()
myNewQueue.SendByLabel()
myNewQueue.SendByFormatName()
myNewQueue.MonitorComputerJournal()
myNewQueue.MonitorQueueJournal()
myNewQueue.MonitorDeadLetter()
myNewQueue.MonitorTransactionalDeadLetter()
Return
End Sub
' References public queues.
Public Sub SendPublic()
Dim myQueue As New MessageQueue(".\myQueue")
myQueue.Send("Public queue by path name.")
Return
End Sub
' References private queues.
Public Sub SendPrivate()
Dim myQueue As New MessageQueue(".\Private$\myQueue")
myQueue.Send("Private queue by path name.")
Return
End Sub
' References queues by label.
Public Sub SendByLabel()
Dim myQueue As New MessageQueue("Label:TheLabel")
myQueue.Send("Queue by label.")
Return
End Sub
' References queues by format name.
Public Sub SendByFormatName()
Dim myQueue As New _
MessageQueue("FormatName:Public=" + _
"5A5F7535-AE9A-41d4-935C-845C2AFF7112")
myQueue.Send("Queue by format name.")
Return
End Sub
' References computer journal queues.
Public Sub MonitorComputerJournal()
Dim computerJournal As New MessageQueue(".\Journal$")
While True
Dim journalMessage As Message = _
computerJournal.Receive()
' Process the journal message.
End While
Return
End Sub
' References queue journal queues.
Public Sub MonitorQueueJournal()
Dim queueJournal As New _
MessageQueue(".\myQueue\Journal$")
While True
Dim journalMessage As Message = _
queueJournal.Receive()
' Process the journal message.
End While
Return
End Sub
' References dead-letter queues.
Public Sub MonitorDeadLetter()
Dim deadLetter As New MessageQueue(".\DeadLetter$")
While True
Dim deadMessage As Message = deadLetter.Receive()
' Process the dead-letter message.
End While
Return
End Sub
' References transactional dead-letter queues.
Public Sub MonitorTransactionalDeadLetter()
Dim TxDeadLetter As New MessageQueue(".\XactDeadLetter$")
While True
Dim txDeadLetterMessage As Message = _
TxDeadLetter.Receive()
' Process the transactional dead-letter message.
End While
Return
End Sub
End Class
Следующий пример кода отправляет сообщение в очередь и получает сообщение из очереди с помощью класса приложения с именем Order
.
#using <system.dll>
#using <system.messaging.dll>
using namespace System;
using namespace System::Messaging;
// This class represents an object the following example
// sends to a queue and receives from a queue.
ref class Order
{
public:
int orderId;
DateTime orderTime;
};
/// <summary>
/// Provides a container class for the example.
/// </summary>
ref class MyNewQueue
{
public:
//*************************************************
// Sends an Order to a queue.
//*************************************************
void SendMessage()
{
// 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" );
// Send the Order to the queue.
myQueue->Send( sentOrder );
return;
}
//*************************************************
// Receives a message containing an Order.
//*************************************************
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 = static_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;
}
};
//*************************************************
// Provides an entry point into the application.
//
// This example sends and receives a message from
// a queue.
//*************************************************
int main()
{
// Create a new instance of the class.
MyNewQueue^ myNewQueue = gcnew MyNewQueue;
// Send a message to a queue.
myNewQueue->SendMessage();
// Receive a message from a queue.
myNewQueue->ReceiveMessage();
return 0;
}
using System;
using System.Messaging;
namespace MyProject
{
// This class represents an object 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();
// Send a message to a queue.
myNewQueue.SendMessage();
// Receive a message from a queue.
myNewQueue.ReceiveMessage();
return;
}
//**************************************************
// Sends an Order to a queue.
//**************************************************
public void SendMessage()
{
// 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");
// Send the Order to the queue.
myQueue.Send(sentOrder);
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
' This class represents an object 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
Public Class MyNewQueue
'
' Provides an entry point into the application.
'
' This example sends and receives a message from
' a qeue.
'
Public Shared Sub Main()
' Create a new instance of the class.
Dim myNewQueue As New MyNewQueue()
' Send a message to a queue.
myNewQueue.SendMessage()
' Receive a message from a queue.
myNewQueue.ReceiveMessage()
Return
End Sub
'
' Sends an Order to a queue.
'
Public Sub SendMessage()
' 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")
' Send the Order to the queue.
myQueue.Send(sentOrder)
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 the 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()))
Catch m As MessageQueueException
' Handle Message Queuing exceptions.
Catch e As InvalidOperationException
' Handle invalid serialization format.
Console.WriteLine(e.Message)
' Catch other exceptions as necessary.
End Try
Return
End Sub
End Class
Комментарии
Технология очереди сообщений позволяет приложениям, работающим в разное время, взаимодействовать между разнородными сетями и системами, которые могут временно находиться в автономном режиме. Приложения отправляют, получают или просматривают (считывают без удаления) сообщения из очередей. Очередь сообщений является необязательным компонентом Windows 2000 и Windows NT и должна устанавливаться отдельно.
Класс MessageQueue является оболочкой для Message Queuing. Существует несколько версий очереди сообщений, и использование MessageQueue класса может привести к немного отличающимся поведению в зависимости от используемой операционной системы.
Класс MessageQueue предоставляет ссылку на очередь очереди сообщений. В конструкторе MessageQueue можно указать путь для подключения к существующему ресурсу или создать новую очередь на сервере. Перед вызовом Send(Object), Peekили Receiveнеобходимо связать новый экземпляр MessageQueue класса с существующей очередью. На этом этапе можно управлять свойствами очереди, такими как Category и Label.
MessageQueue поддерживает два типа получения сообщений: синхронный и асинхронный. Синхронные методы Peek и Receiveзаставляют поток процесса ожидать определенного интервала времени до поступления нового сообщения в очередь. Асинхронные методы BeginPeek и BeginReceiveпозволяют main задачам приложения продолжать работу в отдельном потоке, пока сообщение не поступит в очередь. Эти методы используют объекты обратного вызова и объекты состояния для передачи информации между потоками.
При создании нового экземпляра MessageQueue класса вы не создаете очередь очереди сообщений. Вместо этого можно использовать методы Create(String), Delete(String)и Purge для управления очередями на сервере.
В отличие от , и являются static
членами, поэтому их можно вызывать, не создавая новый экземпляр MessageQueueDelete(String) класса . Create(String)Purge
Для свойства объекта можно задать MessageQueue одно из трех имен: понятное FormatNameимя, или Label.Path Понятное имя, которое определяется свойствами и очереди, предназначено MachineName\QueueName для общедоступной очереди и\Private$
QueueNameMachineName\частной очереди.MachineNameQueueName Свойство FormatName разрешает автономный доступ к очередям сообщений. Наконец, можно использовать свойство очереди Label , чтобы задать для очереди Path.
Список начальных значений свойств для экземпляра MessageQueueсм. в конструкторе MessageQueue .
Конструкторы
MessageQueue() |
Инициализирует новый экземпляр класса MessageQueue. После того как конструктор без параметров инициализирует новый экземпляр, необходимо задать свойство Path экземпляра, прежде чем можно будет использовать этот экземпляр. |
MessageQueue(String) |
Инициализирует новый экземпляр класса MessageQueue, который ссылается на очередь MSMQ по указанному пути. |
MessageQueue(String, Boolean) |
Инициализирует новый экземпляр класса MessageQueue, который ссылается на очередь MSMQ по указанному пути и с указанным ограничением доступа на чтение. |
MessageQueue(String, Boolean, Boolean) |
Инициализирует новый экземпляр класса MessageQueue. |
MessageQueue(String, Boolean, Boolean, QueueAccessMode) |
Инициализирует новый экземпляр класса MessageQueue. |
MessageQueue(String, QueueAccessMode) |
Инициализирует новый экземпляр класса MessageQueue. |
Поля
InfiniteQueueSize |
Указывает, что для очереди нет ограничений по размеру. |
InfiniteTimeout |
Указывает, что для методов считывания и получения сообщений не существует тайм-аута. |
Свойства
AccessMode |
Получает значение, указывающее режим доступа для очереди. |
Authenticate |
Получает или задает значение, показывающее, принимает ли очередь только сообщения, прошедшие проверку подлинности. |
BasePriority |
Получает или задает базовый приоритет, используемый службой очереди сообщений для маршрутизации сообщений общей очереди по сети. |
CanRaiseEvents |
Возвращает значение, показывающее, может ли компонент вызывать событие. (Унаследовано от Component) |
CanRead |
Получает значение, указывающее, может ли быть прочитан объект MessageQueue. |
CanWrite |
Получает значение, указывающее, может ли быть выполнена запись в MessageQueue. |
Category |
Возвращает или задает категорию очереди. |
Container |
Возвращает объект IContainer, который содержит коллекцию Component. (Унаследовано от Component) |
CreateTime |
Получает время и дату создания очереди в службе очереди сообщений. |
DefaultPropertiesToSend |
Получает или задает значения свойств сообщения, которые будут использоваться по умолчанию, когда приложение будет отправлять сообщения в очередь. |
DenySharedReceive |
Получает или задает значение, показывающее, имеет ли этот объект MessageQueue монопольный доступ на получение сообщений из очереди сообщений. |
DesignMode |
Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время. (Унаследовано от Component) |
EnableConnectionCache |
Получает или задает значение, указывающее, будет ли приложение поддерживать кэш подключений. |
EncryptionRequired |
Получает или задает значение, указывающее, будет ли очередь принимать только неконфиденциальные (незашифрованные) сообщения. |
Events |
Возвращает список обработчиков событий, которые прикреплены к этому объекту Component. (Унаследовано от Component) |
FormatName |
Получает уникальное имя очереди, созданное службой очереди сообщений в момент создания очереди. |
Formatter |
Получает или задает модуль форматирования, используемый для сериализации объекта в текст сообщения или десериализации из текста сообщения, прочитанного из очереди или записанного в очередь. |
Id |
Получает уникальный идентификатор очереди сообщений. |
Label |
Получает или задает описание очереди. |
LastModifyTime |
Получает время последнего изменения свойств очереди. |
MachineName |
Получает или задает имя компьютера, на котором расположена очередь Message Queuing. |
MaximumJournalSize |
Получает или задает максимальный размер очереди журнала. |
MaximumQueueSize |
Получает или задает максимальный размер очереди. |
MessageReadPropertyFilter |
Получает или задает фильтр свойств для получения и считывания сообщений. |
MulticastAddress |
Представлено в MSMQ 3.0. Получает или задает адрес многоадресной рассылки, связанный с данной очередью. |
Path |
Получает или задает путь очереди. После задания свойства Path объект MessageQueue будет указывать на новую очередь. |
QueueName |
Получает или задает понятное имя, определяющее очередь. |
ReadHandle |
Получает собственный дескриптор, предназначенный для чтения сообщений из очереди сообщений. |
Site |
Получает или задает ISite объекта Component. (Унаследовано от Component) |
SynchronizingObject |
Получает или задает объект, который используется для маршалинга вызовов обработчика событий, возникающих в результате наступления события ReceiveCompleted или события PeekCompleted. |
Transactional |
Получает значение, указывающее, принимает ли очередь только транзакции. |
UseJournalQueue |
Получает или задает значение, указывающее, должны ли полученные сообщения копироваться в очередь журнала. |
WriteHandle |
Получает собственный дескриптор, который используется для отправки сообщений в очередь сообщений. |
Методы
BeginPeek() |
Инициирует асинхронную операцию быстрого редактирования без времени ожидания. Операция не завершается, пока сообщение не станет доступным в очереди. |
BeginPeek(TimeSpan) |
Инициирует асинхронную операцию быстрого редактирования с заданным временем ожидания. Операция не завершится, пока сообщение не станет доступным в очереди или не истечет время ожидания. |
BeginPeek(TimeSpan, Cursor, PeekAction, Object, AsyncCallback) |
Инициирует асинхронную операцию считывания, которая имеет заданный тайм-аут и использует заданный курсор, заданную операцию считывания и заданный объект состояния. Объект состояния предоставляет связанные сведения в течение всего времени выполнения операции. Посредством обратного вызова эта перегрузка получает уведомление об отличительных особенностях обработчика событий для операции. Операция остается незавершенной, пока сообщение не станет доступным в очереди или пока не истечет время ожидания. |
BeginPeek(TimeSpan, Object) |
Инициирует асинхронную операцию считывания с указанным тайм-аутом и заданным объектом состояния, который предоставляет связанные данные в течение всего времени выполнения операции. Операция остается незавершенной, пока сообщение не станет доступным в очереди или пока не истечет время ожидания. |
BeginPeek(TimeSpan, Object, AsyncCallback) |
Инициирует асинхронную операцию считывания с указанным тайм-аутом и заданным объектом состояния, который предоставляет связанные данные в течение всего времени выполнения операции. Посредством обратного вызова эта перегрузка получает уведомление об отличительных особенностях обработчика событий для операции. Операция остается незавершенной, пока сообщение не станет доступным в очереди или пока не истечет время ожидания. |
BeginReceive() |
Инициирует асинхронную операцию получения, которая не имеет времени ожидания. Операция не будет завершена, пока сообщение не станет доступным в очереди. |
BeginReceive(TimeSpan) |
Инициирует асинхронную операцию получения с заданным временем ожидания. Операция не завершится, пока сообщение не станет доступным в очереди или не истечет время ожидания. |
BeginReceive(TimeSpan, Cursor, Object, AsyncCallback) |
Инициирует асинхронную операцию получения, которая имеет заданный тайм-аут и использует заданный курсор и заданный объект состояния. Объект состояния предоставляет связанные сведения в течение всего времени выполнения операции. Посредством обратного вызова эта перегрузка получает уведомление об отличительных особенностях обработчика событий для операции. Операция остается незавершенной, пока сообщение не станет доступным в очереди или пока не истечет время ожидания. |
BeginReceive(TimeSpan, Object) |
Инициирует асинхронную операцию получения с указанным тайм-аутом и заданным объектом состояния, который предоставляет связанные данные в течение всего времени выполнения операции. Операция остается незавершенной, пока сообщение не станет доступным в очереди или пока не истечет время ожидания. |
BeginReceive(TimeSpan, Object, AsyncCallback) |
Инициирует асинхронную операцию получения с указанным тайм-аутом и заданным объектом состояния, который предоставляет связанные данные в течение всего времени выполнения операции. Посредством обратного вызова эта перегрузка получает уведомление об отличительных особенностях обработчика событий для операции. Операция остается незавершенной, пока сообщение не станет доступным в очереди или пока не истечет время ожидания. |
ClearConnectionCache() |
Очищает кэш подключений. |
Close() |
Освобождает все ресурсы, выделенные классом MessageQueue. |
Create(String) |
Создает нетранзакционную очередь сообщений по указанному пути. |
Create(String, Boolean) |
Создает транзакционную или нетранзакционную очередь сообщений по указанному пути. |
CreateCursor() |
Создает новый объект Cursor для текущей очереди сообщений. |
CreateObjRef(Type) |
Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом. (Унаследовано от MarshalByRefObject) |
Delete(String) |
Удаляет очередь с сервера очереди сообщений. |
Dispose() |
Освобождает все ресурсы, занятые модулем Component. (Унаследовано от Component) |
Dispose(Boolean) |
Уничтожает ресурсы (кроме памяти), используемые классом MessageQueue. |
EndPeek(IAsyncResult) |
Завершает указанную асинхронную операцию считывания. |
EndReceive(IAsyncResult) |
Завершает указанную асинхронную операцию получения. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
Exists(String) |
Определяет, существует ли по указанному пути очередь сообщений. |
GetAllMessages() |
Возвращает все сообщения из очереди. |
GetEnumerator() |
Устаревшие..
Перечисляет сообщения в очереди. Параметр GetEnumerator() использовать не рекомендуется. Вместо него следует использовать метод GetMessageEnumerator2(). |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetLifetimeService() |
Устаревшие..
Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра. (Унаследовано от MarshalByRefObject) |
GetMachineId(String) |
Получает идентификатор компьютера, на котором расположена очередь, на которую ссылается этот класс MessageQueue. |
GetMessageEnumerator() |
Устаревшие..
Создает объект перечислителя для всех сообщений очереди. Параметр GetMessageEnumerator() использовать не рекомендуется. Вместо него следует использовать метод GetMessageEnumerator2(). |
GetMessageEnumerator2() |
Создает объект перечислителя для всех сообщений очереди. |
GetMessageQueueEnumerator() |
Обеспечивает семантику курсора последовательного доступа для перечисления во всех общих очередях сети. |
GetMessageQueueEnumerator(MessageQueueCriteria) |
Обеспечивает семантику курсора последовательного доступа для перечисления во всех общих очередях сети, удовлетворяющих указанным критериям. |
GetPrivateQueuesByMachine(String) |
Извлекает все частные очереди на указанном компьютере. |
GetPublicQueues() |
Извлекает все общие очереди сети. |
GetPublicQueues(MessageQueueCriteria) |
Извлекает все общие очереди сети, удовлетворяющие указанным критериям. |
GetPublicQueuesByCategory(Guid) |
Извлекает все общие очереди сети, принадлежащие к указанной категории. |
GetPublicQueuesByLabel(String) |
Извлекает все общие очереди сети с указанной меткой. |
GetPublicQueuesByMachine(String) |
Извлекает все общие очереди, находящиеся на указанном компьютере. |
GetSecurityContext() |
Извлекает контекст безопасности, который служба MSMQ связывает с текущим пользователем (удостоверением потока) на момент этого вызова. |
GetService(Type) |
Возвращает объект, представляющий службу, предоставляемую классом Component или классом Container. (Унаследовано от Component) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
InitializeLifetimeService() |
Устаревшие..
Получает объект службы времени существования для управления политикой времени существования для этого экземпляра. (Унаследовано от MarshalByRefObject) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
MemberwiseClone(Boolean) |
Создает неполную копию текущего объекта MarshalByRefObject. (Унаследовано от MarshalByRefObject) |
Peek() |
Возвращает, не удаляя (считывает), первое сообщение в очереди, на которую ссылается этот объект MessageQueue. Метод Peek() является синхронным, поэтому он блокирует текущий поток до тех пор, пока сообщение не станет доступным. |
Peek(TimeSpan) |
Возвращает, не удаляя (считывает), первое сообщение в очереди, на которую ссылается этот объект MessageQueue. Метод Peek() является синхронным, поэтому он блокирует текущий поток до тех пор, пока сообщение не станет доступным или пока не истечет заданный тайм-аут. |
Peek(TimeSpan, Cursor, PeekAction) |
Возвращает, не удаляя (считывает), текущее или следующее сообщение в очереди, используя заданный курсор. Метод Peek() является синхронным, поэтому он блокирует текущий поток до тех пор, пока сообщение не станет доступным или пока не истечет заданный тайм-аут. |
PeekByCorrelationId(String) |
Считывает сообщение, которое соответствует заданному идентификатору корреляции, и сразу инициирует исключение, если в настоящий момент в очереди нет сообщения с указанным идентификатором корреляции. |
PeekByCorrelationId(String, TimeSpan) |
Считывает сообщение, которое соответствует заданному идентификатору корреляции и ожидает, пока в очереди не появится сообщение с указанным идентификатором корреляции или пока не истечет тайм-аут. |
PeekById(String) |
Считывает сообщение, идентификатор которого соответствует параметру |
PeekById(String, TimeSpan) |
Считывает сообщение, идентификатор которого соответствует параметру |
PeekByLookupId(Int64) |
Представлено в MSMQ 3.0. Считывает сообщение, соответствующее заданному идентификатору просмотра, из нетранзакционной очереди. |
PeekByLookupId(MessageLookupAction, Int64) |
Представлено в MSMQ 3.0. Считывает конкретное сообщение из очереди. Сообщение может быть задано кодом просмотра либо его положением относительно начала или конца очереди. |
Purge() |
Удаляет все сообщения, содержащиеся в очереди. |
Receive() |
Получает первое доступное в очереди сообщение, на которое ссылается объект MessageQueue. Этот вызов является синхронным и он блокирует текущий поток выполнения, пока сообщение не станет доступным. |
Receive(MessageQueueTransaction) |
Получает первое доступное в транзакционной очереди сообщение, на которое ссылается объект MessageQueue. Этот вызов является синхронным и он блокирует текущий поток выполнения, пока сообщение не станет доступным. |
Receive(MessageQueueTransactionType) |
Получает первое доступное в очереди сообщение, на которое ссылается объект MessageQueue. Этот вызов является синхронным и он блокирует текущий поток выполнения, пока сообщение не станет доступным. |
Receive(TimeSpan) |
Получает первое сообщение, доступное в очереди, на которую ссылается объект MessageQueue, и ожидает пока в очереди не появится сообщение или пока не истечет тайм-аут. |
Receive(TimeSpan, Cursor) |
Получает текущее сообщение в очереди, используя заданный курсор. Если доступных сообщений нет, этот метод ожидает, пока не станет доступным сообщение или пока не истечет тайм-аут. |
Receive(TimeSpan, Cursor, MessageQueueTransaction) |
Получает текущее сообщение в очереди, используя заданный курсор. Если доступных сообщений нет, этот метод ожидает, пока не станет доступным сообщение или пока не истечет тайм-аут. |
Receive(TimeSpan, Cursor, MessageQueueTransactionType) |
Получает текущее сообщение в очереди, используя заданный курсор. Если доступных сообщений нет, этот метод ожидает, пока не станет доступным сообщение или пока не истечет тайм-аут. |
Receive(TimeSpan, MessageQueueTransaction) |
Получает первое сообщение, доступное в транзакционной очереди, на которую ссылается объект MessageQueue, и ожидает, пока в очереди не появится сообщение или пока не истечет тайм-аут. |
Receive(TimeSpan, MessageQueueTransactionType) |
Получает первое доступное в очереди сообщение, на которое ссылается объект MessageQueue. Данный вызов является синхронным, и он ожидает, пока в очереди не появится сообщение, или пока не истечет тайм-аут. |
ReceiveByCorrelationId(String) |
Получает сообщение, которое соответствует заданному идентификатору корреляции (из нетранзакционной очереди), и сразу инициирует исключение, если в настоящий момент в очереди нет сообщения с указанным идентификатором корреляции. |
ReceiveByCorrelationId(String, MessageQueueTransaction) |
Получает сообщение, которое соответствует заданному идентификатору корреляции (из транзакционной очереди), и сразу инициирует исключение, если в настоящий момент в очереди нет сообщения с указанным идентификатором корреляции. |
ReceiveByCorrelationId(String, MessageQueueTransactionType) |
Получает сообщение, которое соответствует заданному идентификатору корреляции, и сразу инициирует исключение, если в настоящий момент в очереди нет сообщения с указанным идентификатором корреляции. |
ReceiveByCorrelationId(String, TimeSpan) |
Получает сообщение, которое соответствует заданному идентификатору корреляции (из нетранзакционной очереди), и ожидает, пока в очереди не появится сообщение с указанным идентификатором корреляции или пока не истечет тайм-аут. |
ReceiveByCorrelationId(String, TimeSpan, MessageQueueTransaction) |
Получает сообщение, которое соответствует заданному идентификатору корреляции (из транзакционной очереди), и ожидает, пока в очереди не появится сообщение с указанным идентификатором корреляции или пока не истечет тайм-аут. |
ReceiveByCorrelationId(String, TimeSpan, MessageQueueTransactionType) |
Получает сообщение, которое соответствует заданному идентификатору корреляции и ожидает, пока в очереди не появится сообщение с указанным идентификатором корреляции или пока не истечет тайм-аут. |
ReceiveById(String) |
Получает из нетранзакционной очереди сообщение, которое соответствует заданному идентификатору, и сразу инициирует исключение, если в настоящий момент в очереди нет сообщения с указанным идентификатором. |
ReceiveById(String, MessageQueueTransaction) |
Получает сообщение, которое соответствует заданному идентификатору (из транзакционной очереди), и сразу инициирует исключение, если в настоящий момент в очереди нет сообщения с указанным идентификатором. |
ReceiveById(String, MessageQueueTransactionType) |
Получает сообщение, которое соответствует заданному идентификатору, и сразу инициирует исключение, если в настоящий момент в очереди нет сообщения с указанным идентификатором. |
ReceiveById(String, TimeSpan) |
Получает сообщение, которое соответствует заданному идентификатору (из нетранзакционной очереди), и ожидает, пока в очереди не появится сообщение с указанным идентификатором, или пока не истечет тайм-аут. |
ReceiveById(String, TimeSpan, MessageQueueTransaction) |
Получает сообщение, которое соответствует заданному идентификатору (из транзакционной очереди), и ожидает, пока в очереди не появится сообщение с указанным идентификатором, или пока не истечет тайм-аут. |
ReceiveById(String, TimeSpan, MessageQueueTransactionType) |
Получает сообщение, которое соответствует заданному идентификатору, и ожидает, пока в очереди не появится сообщение с указанным идентификатором, или пока не истечет тайм-аут. |
ReceiveByLookupId(Int64) |
Представлено в MSMQ 3.0. Получает сообщение, соответствующее заданному идентификатору просмотра, из нетранзакционной очереди. |
ReceiveByLookupId(MessageLookupAction, Int64, MessageQueueTransaction) |
Представлено в MSMQ 3.0. Получает конкретное сообщение из транзакционной очереди. Сообщение может быть задано кодом просмотра либо его положением относительно начала или конца очереди. |
ReceiveByLookupId(MessageLookupAction, Int64, MessageQueueTransactionType) |
Представлено в MSMQ 3.0. Получает из очереди определенное сообщение, используя заданный контекст транзакции. Сообщение может быть задано кодом просмотра либо его положением относительно начала или конца очереди. |
Refresh() |
Обновляет свойства, представленные объектом MessageQueue для отражения текущего состояния ресурса. |
ResetPermissions() |
Присваивает списку разрешений значения по умолчанию операционной системы. Удаляет все разрешения очередей, добавленные в список по умолчанию. |
Send(Object) |
Отправляет объект в нетранзакционную очередь, на которую ссылается этот класс MessageQueue. |
Send(Object, MessageQueueTransaction) |
Отправляет объект в транзакционную очередь, на которую ссылается этот объект MessageQueue. |
Send(Object, MessageQueueTransactionType) |
Отправляет объект в очередь, на которую ссылается этот объект MessageQueue. |
Send(Object, String) |
Отправляет объект в нетранзакционную очередь, на которую ссылается этот объект MessageQueue, и задает метку сообщения. |
Send(Object, String, MessageQueueTransaction) |
Отправляет объект в транзакционную очередь, на которую ссылается этот объект MessageQueue, и задает метку сообщения. |
Send(Object, String, MessageQueueTransactionType) |
Отправляет объект в очередь, на которую ссылается этот объект MessageQueue, и задает метку сообщения. |
SetPermissions(AccessControlList) |
Назначает права доступа к очереди на основе содержимого списка управления доступом. |
SetPermissions(MessageQueueAccessControlEntry) |
Назначает права доступа к очереди на основе содержимого элемента управления доступом. |
SetPermissions(String, MessageQueueAccessRights) |
Предоставляет компьютеру, группе или пользователю указанные права доступа. |
SetPermissions(String, MessageQueueAccessRights, AccessControlEntryType) |
Предоставляет компьютеру, группе или пользователю указанные права доступа указанного типа управления доступом (разрешить, отказать, отозвать или задать). |
ToString() |
Возвращает объект String, содержащий имя Component, если оно есть. Этот метод не следует переопределять. (Унаследовано от Component) |
События
Disposed |
Возникает при удалении компонента путем вызова метода Dispose(). (Унаследовано от Component) |
PeekCompleted |
Происходит, когда сообщение читается без удаления из очереди. Это результат асинхронной операции — BeginPeek(). |
ReceiveCompleted |
Происходит, если сообщение было удалено из очереди. Это событие инициируется асинхронной операцией, BeginReceive(). |
Методы расширения
Cast<TResult>(IEnumerable) |
Приводит элементы объекта IEnumerable к заданному типу. |
OfType<TResult>(IEnumerable) |
Выполняет фильтрацию элементов объекта IEnumerable по заданному типу. |
AsParallel(IEnumerable) |
Позволяет осуществлять параллельный запрос. |
AsQueryable(IEnumerable) |
Преобразовывает коллекцию IEnumerable в объект IQueryable. |
Применяется к
Потокобезопасность
Потокобезопасный GetAllMessages() метод является только методом .