Поделиться через


MessageQueue Класс

Определение

Предоставляет доступ к очереди на сервере очереди сообщений.

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 представляет собой оболочку вокруг очереди сообщений. Существует несколько версий очереди сообщений, и использование MessageQueue класса может привести к немного другому поведению в зависимости от используемой операционной системы.

Класс MessageQueue предоставляет ссылку на очередь очереди очереди сообщений. Можно указать путь в MessageQueue конструкторе для подключения к существующему ресурсу или создать новую очередь на сервере. Прежде чем вызывать Send(Object)PeekилиReceive, необходимо связать новый экземпляр MessageQueue класса с существующей очередью. На этом этапе можно управлять свойствами очереди, такими как Category и Label.

MessageQueue поддерживает два типа извлечения сообщений: синхронный и асинхронный. Синхронные методы Peek и Receive, при этом поток процесса ожидает указанного интервала времени, чтобы новое сообщение прибыло в очередь. Асинхронные методы BeginPeek и BeginReceiveпозволяют основным задачам приложения продолжать работу в отдельном потоке, пока сообщение не поступает в очередь. Эти методы работают с помощью объектов обратного вызова и объектов состояния для обмена данными между потоками.

При создании нового экземпляра MessageQueue класса вы не создаете новую очередь очереди очереди сообщений. Вместо этого можно использовать Create(String)Delete(String)методы и Purge методы для управления очередями на сервере.

В отличие Purgeот элементов и Delete(String) членовstatic, поэтому их можно вызывать без создания нового экземпляра MessageQueue класса. Create(String)

Свойство объекта Path можно задать MessageQueue одним из трех имен: понятное имя, FormatNameимя или .Label Понятное имя, которое определяется свойствами очередиQueueName, предназначеноQueueNameMachineName\для общедоступной очереди MachineName и MachineNameQueueName\Private$\для частной очереди. Свойство FormatName разрешает автономный доступ к очередям сообщений. Наконец, можно использовать свойство очереди Label для задания очереди Path.

Список начальных значений свойств для экземпляра MessageQueueсм. в конструкторе MessageQueue .

Конструкторы

Имя Описание
MessageQueue()

Инициализирует новый экземпляр класса MessageQueue. После инициализации нового экземпляра конструктор без параметров необходимо задать свойство экземпляра Path , прежде чем использовать экземпляр.

MessageQueue(String, Boolean, Boolean, QueueAccessMode)

Инициализирует новый экземпляр класса MessageQueue.

MessageQueue(String, Boolean, Boolean)

Инициализирует новый экземпляр класса MessageQueue.

MessageQueue(String, Boolean)

Инициализирует новый экземпляр MessageQueue класса, который ссылается на очередь очереди сообщений по указанному пути и с указанным ограничением доступа на чтение.

MessageQueue(String, QueueAccessMode)

Инициализирует новый экземпляр класса MessageQueue.

MessageQueue(String)

Инициализирует новый экземпляр 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

Возвращает или задает имя компьютера, в котором находится очередь очереди сообщений.

MaximumJournalSize

Возвращает или задает максимальный размер очереди журнала.

MaximumQueueSize

Возвращает или задает максимальный размер очереди.

MessageReadPropertyFilter

Возвращает или задает фильтр свойств для получения или просмотра сообщений.

MulticastAddress

Возвращает или задает адрес многоадресной рассылки, связанный с очередью.

Path

Возвращает или задает путь очереди. Path Установка причины MessageQueue указания на новую очередь.

QueueName

Возвращает или задает понятное имя, определяющее очередь.

ReadHandle

Получает собственный дескриптор, используемый для чтения сообщений из очереди сообщений.

Site

Возвращает или задает ISite объект Component.

(Унаследовано от Component)
SynchronizingObject

Возвращает или задает объект, который маршалирует вызов обработчика событий, полученный из ReceiveCompleted или PeekCompleted события.

Transactional

Возвращает значение, указывающее, принимает ли очередь только транзакции.

UseJournalQueue

Возвращает или задает значение, указывающее, копируются ли полученные сообщения в очередь журнала.

WriteHandle

Получает собственный дескриптор, используемый для отправки сообщений в очередь сообщений.

Методы

Имя Описание
BeginPeek()

Инициирует асинхронную операцию просмотра, которая не имеет времени ожидания. Операция не будет завершена, пока сообщение не станет доступным в очереди.

BeginPeek(TimeSpan, Cursor, PeekAction, Object, AsyncCallback)

Инициирует асинхронную операцию просмотра, которая имеет заданное время ожидания и использует указанный курсор, указанное действие просмотра и указанный объект состояния. Объект состояния предоставляет связанные сведения в течение всего времени существования операции. Эта перегрузка получает уведомление через обратный вызов идентификатор обработчика событий для операции. Операция не завершается до тех пор, пока сообщение не станет доступным в очереди или время ожидания.

BeginPeek(TimeSpan, Object, AsyncCallback)

Инициирует асинхронную операцию просмотра с заданным временем ожидания и заданным объектом состояния, который предоставляет связанную информацию в течение всего времени существования операции. Эта перегрузка получает уведомление через обратный вызов идентификатор обработчика событий для операции. Операция не завершается до тех пор, пока сообщение не станет доступным в очереди или время ожидания.

BeginPeek(TimeSpan, Object)

Инициирует асинхронную операцию просмотра с заданным временем ожидания и заданным объектом состояния, который предоставляет связанную информацию в течение всего времени существования операции. Операция не завершается до тех пор, пока сообщение не станет доступным в очереди или время ожидания.

BeginPeek(TimeSpan)

Инициирует асинхронную операцию просмотра с указанным временем ожидания. Операция не завершается до тех пор, пока сообщение не станет доступным в очереди или время ожидания.

BeginReceive()

Инициирует асинхронную операцию получения, которая не имеет времени ожидания. Операция не будет завершена, пока сообщение не станет доступным в очереди.

BeginReceive(TimeSpan, Cursor, Object, AsyncCallback)

Инициирует асинхронную операцию получения с заданным временем ожидания и использует указанный курсор и указанный объект состояния. Объект состояния предоставляет связанные сведения в течение всего времени существования операции. Эта перегрузка получает уведомление через обратный вызов идентификатор обработчика событий для операции. Операция не завершается до тех пор, пока сообщение не станет доступным в очереди или время ожидания.

BeginReceive(TimeSpan, Object, AsyncCallback)

Инициирует асинхронную операцию получения с заданным временем ожидания и заданным объектом состояния, который предоставляет связанные сведения в течение всего времени существования операции. Эта перегрузка получает уведомление через обратный вызов идентификатор обработчика событий для операции. Операция не завершается до тех пор, пока сообщение не станет доступным в очереди или время ожидания.

BeginReceive(TimeSpan, Object)

Инициирует асинхронную операцию получения с заданным временем ожидания и заданным объектом состояния, который предоставляет связанные сведения в течение всего времени существования операции. Операция не завершается до тех пор, пока сообщение не станет доступным в очереди или время ожидания.

BeginReceive(TimeSpan)

Инициирует асинхронную операцию получения с указанным временем ожидания. Операция не завершается до тех пор, пока сообщение не станет доступным в очереди или время ожидания.

ClearConnectionCache()

Очищает кэш подключений.

Close()

Освобождает все ресурсы, выделенные объектом MessageQueue.

Create(String, Boolean)

Создает очередь очереди очереди очередей сообщений, не относящихся к транзакциям, по указанному пути.

Create(String)

Создает очередь очереди очереди сообщений, не относящихся к транзакциям, по указанному пути.

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, Cursor, PeekAction)

Возвращается без удаления (просмотр) текущего или следующего сообщения в очереди с помощью указанного курсора. Метод Peek() синхронен, поэтому блокирует текущий поток, пока сообщение не станет доступным или указано время ожидания.

Peek(TimeSpan)

Возвращается без удаления первого сообщения в очереди, на которое ссылается это MessageQueue. Метод Peek() синхронен, поэтому блокирует текущий поток, пока сообщение не станет доступным или указано время ожидания.

PeekByCorrelationId(String, TimeSpan)

Выводит сообщение, соответствующее заданному идентификатору корреляции, и ожидает, пока сообщение с указанным идентификатором корреляции будет доступно в очереди или истекает время ожидания.

PeekByCorrelationId(String)

Выводит сообщение, соответствующее заданному идентификатору корреляции, и немедленно вызывает исключение, если в очереди нет сообщения с указанным идентификатором корреляции.

PeekById(String, TimeSpan)

Выводит сообщение, идентификатор сообщения которого соответствует параметру id . Ожидает, пока сообщение не появится в очереди или время ожидания.

PeekById(String)

Выводит сообщение, идентификатор сообщения которого соответствует параметру id .

PeekByLookupId(Int64)

Представлено в MSMQ 3.0. Просматривает сообщение, соответствующее заданному идентификатору подстановки из очереди, отличной от транзакций.

PeekByLookupId(MessageLookupAction, Int64)

Представлено в MSMQ 3.0. Просматривает определенное сообщение из очереди. Сообщение может быть указано идентификатором подстановки или его положением в передней или конечной части очереди.

Purge()

Удаляет все сообщения, содержащиеся в очереди.

Receive()

Получает первое сообщение, доступное в очереди, на которую ссылается .MessageQueue Этот вызов синхронен и блокирует текущий поток выполнения до тех пор, пока сообщение не будет доступно.

Receive(MessageQueueTransaction)

Получает первое сообщение, доступное в очереди транзакций, на которое ссылается .MessageQueue Этот вызов синхронен и блокирует текущий поток выполнения до тех пор, пока сообщение не будет доступно.

Receive(MessageQueueTransactionType)

Получает первое сообщение, доступное в очереди, на которую ссылается .MessageQueue Этот вызов синхронен и блокирует текущий поток выполнения до тех пор, пока сообщение не будет доступно.

Receive(TimeSpan, Cursor, MessageQueueTransaction)

Получает текущее сообщение в очереди с помощью указанного курсора. Если сообщение недоступно, этот метод ожидает, пока не будет доступно сообщение или истекает время ожидания.

Receive(TimeSpan, Cursor, MessageQueueTransactionType)

Получает текущее сообщение в очереди с помощью указанного курсора. Если сообщение недоступно, этот метод ожидает, пока не будет доступно сообщение или истекает время ожидания.

Receive(TimeSpan, Cursor)

Получает текущее сообщение в очереди с помощью указанного курсора. Если сообщение недоступно, этот метод ожидает, пока не будет доступно сообщение или истекает время ожидания.

Receive(TimeSpan, MessageQueueTransaction)

Получает первое сообщение, доступное в очереди транзакций, на которое ссылается MessageQueue и ожидает, пока сообщение не будет доступно в очереди или истекает время ожидания.

Receive(TimeSpan, MessageQueueTransactionType)

Получает первое сообщение, доступное в очереди, на которую ссылается .MessageQueue Этот вызов синхронен и ожидает, пока сообщение не будет доступно в очереди или истекает время ожидания.

Receive(TimeSpan)

Получает первое сообщение, доступное в очереди, на которое ссылается MessageQueue ссылка, и ожидает, пока сообщение не будет доступно в очереди или истекает время ожидания.

ReceiveByCorrelationId(String, MessageQueueTransaction)

Получает сообщение, соответствующее заданному идентификатору корреляции (из очереди транзакций), и немедленно вызывает исключение, если сообщение с указанным идентификатором корреляции в настоящее время отсутствует в очереди.

ReceiveByCorrelationId(String, MessageQueueTransactionType)

Получает сообщение, соответствующее заданному идентификатору корреляции, и немедленно вызывает исключение, если в очереди нет сообщения с указанным идентификатором корреляции.

ReceiveByCorrelationId(String, TimeSpan, MessageQueueTransaction)

Получает сообщение, соответствующее заданному идентификатору корреляции (из очереди транзакций), и ожидает, пока сообщение с указанным идентификатором корреляции будет доступно в очереди или истекает время ожидания.

ReceiveByCorrelationId(String, TimeSpan, MessageQueueTransactionType)

Получает сообщение, соответствующее заданному идентификатору корреляции, и ожидает, пока сообщение с указанным идентификатором корреляции будет доступно в очереди или истекает время ожидания.

ReceiveByCorrelationId(String, TimeSpan)

Получает сообщение, соответствующее заданному идентификатору корреляции (из очереди, отличной от транзакций), и ожидает, пока сообщение с указанным идентификатором корреляции будет доступно в очереди или истекает время ожидания.

ReceiveByCorrelationId(String)

Получает сообщение, соответствующее заданному идентификатору корреляции (из очереди, отличной от транзакций), и немедленно вызывает исключение, если сообщение с указанным идентификатором корреляции в настоящее время отсутствует в очереди.

ReceiveById(String, MessageQueueTransaction)

Получает сообщение, соответствующее заданному идентификатору (из очереди транзакций), и немедленно вызывает исключение, если в очереди нет сообщения с указанным идентификатором.

ReceiveById(String, MessageQueueTransactionType)

Получает сообщение, соответствующее заданному идентификатору, и немедленно вызывает исключение, если в очереди нет сообщения с указанным идентификатором.

ReceiveById(String, TimeSpan, MessageQueueTransaction)

Получает сообщение, соответствующее заданному идентификатору (из очереди транзакций), и ожидает, пока сообщение с указанным идентификатором не будет доступно в очереди или истекает время ожидания.

ReceiveById(String, TimeSpan, MessageQueueTransactionType)

Получает сообщение, соответствующее заданному идентификатору, и ожидает, пока сообщение с указанным идентификатором не будет доступно в очереди или истекает время ожидания.

ReceiveById(String, TimeSpan)

Получает сообщение, соответствующее заданному идентификатору (из очереди, отличной от транзакций), и ожидает, пока сообщение с указанным идентификатором не будет доступно в очереди или истекает время ожидания.

ReceiveById(String)

Получает сообщение, соответствующее заданному идентификатору, из очереди, отличной от транзакций, и немедленно вызывает исключение, если сообщение с указанным идентификатором в настоящее время отсутствует в очереди.

ReceiveByLookupId(Int64)

Представлено в MSMQ 3.0. Получает сообщение, соответствующее заданному идентификатору подстановки, из очереди, отличной от транзакций.

ReceiveByLookupId(MessageLookupAction, Int64, MessageQueueTransaction)

Представлено в MSMQ 3.0. Получает определенное сообщение из очереди транзакций. Сообщение может быть указано идентификатором подстановки или его положением в передней или конечной части очереди.

ReceiveByLookupId(MessageLookupAction, Int64, MessageQueueTransactionType)

Представлено в MSMQ 3.0. Получает определенное сообщение из очереди, используя указанный контекст транзакции. Сообщение может быть указано идентификатором подстановки или его положением в передней или конечной части очереди.

Refresh()

Обновляет свойства, представленные в соответствии с MessageQueue текущим состоянием ресурса.

ResetPermissions()

Сбрасывает список разрешений в значения по умолчанию операционной системы. Удаляет все разрешения очереди, добавленные в список по умолчанию.

Send(Object, MessageQueueTransaction)

Отправляет объект в очередь транзакций, на которую ссылается эта MessageQueueссылка.

Send(Object, MessageQueueTransactionType)

Отправляет объект в очередь, на которую ссылается эта MessageQueueссылка.

Send(Object, String, MessageQueueTransaction)

Отправляет объект в очередь транзакций, на которую ссылается это MessageQueue , и указывает метку для сообщения.

Send(Object, String, MessageQueueTransactionType)

Отправляет объект в очередь, на которую ссылается эта MessageQueue ссылка, и указывает метку для сообщения.

Send(Object, String)

Отправляет объект в очередь, на которую ссылается MessageQueue не транзакционная очередь, и указывает метку для сообщения.

Send(Object)

Отправляет объект в очередь без транзакций, на которую ссылается этот MessageQueueпараметр.

SetPermissions(AccessControlList)

Назначает права доступа к очереди на основе содержимого списка управления доступом.

SetPermissions(MessageQueueAccessControlEntry)

Назначает права доступа в очередь на основе содержимого записи управления доступом.

SetPermissions(String, MessageQueueAccessRights, AccessControlEntryType)

Предоставляет компьютеру, группе или пользователю указанные права доступа с указанным типом управления доступом (разрешить, запретить, отозвать или задать).

SetPermissions(String, MessageQueueAccessRights)

Предоставляет компьютеру, группе или пользователю указанные права доступа.

ToString()

String Возвращает имя, содержащее имя , если таковое Componentимеется. Этот метод не должен быть переопределен.

(Унаследовано от Component)

События

Имя Описание
Disposed

Происходит при удалении компонента вызовом Dispose() метода.

(Унаследовано от Component)
PeekCompleted

Происходит при чтении сообщения без удаления из очереди. Это результат асинхронной операции BeginPeek().

ReceiveCompleted

Происходит при удалении сообщения из очереди. Это событие вызывается асинхронной операцией BeginReceive().

Методы расширения

Имя Описание
AsParallel(IEnumerable)

Включает параллелизацию запроса.

AsQueryable(IEnumerable)

Преобразует IEnumerable в IQueryable.

Cast<TResult>(IEnumerable)

Приведение элементов IEnumerable к указанному типу.

OfType<TResult>(IEnumerable)

Фильтрует элементы IEnumerable на основе указанного типа.

Применяется к

Потокобезопасность

GetAllMessages() Только этот метод является потокобезопасной.

См. также раздел