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


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)

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

PeekById(String, TimeSpan)

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

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() метод является только методом .

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