Прочитать на английском

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


MessagePriority Перечисление

Определение

Задает приоритет, применяемый службой Message Queuing к сообщению на маршруте его прохождения до очереди и при занесении в очередь места назначения.

public enum MessagePriority
Наследование
MessagePriority

Поля

Имя Значение Описание
AboveNormal 4

Между приоритетами сообщения High и Normal.

High 5

Высокий приоритет сообщения.

Highest 7

Высший приоритет сообщения.

Low 2

Низкий приоритет сообщения.

Lowest 0

Низший приоритет сообщения.

Normal 3

Нормальный приоритет сообщения.

VeryHigh 6

Между приоритетами сообщения Highest и High.

VeryLow 1

Между приоритетами сообщения Low и Lowest.

Примеры

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

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 sends and receives a message from
        // a queue.
        //**************************************************

        public static void Main()
        {
            // Create a new instance of the class.
            MyNewQueue myNewQueue = new MyNewQueue();

            // Send messages to a queue.
            myNewQueue.SendMessage(MessagePriority.Normal, "First Message Body.");
            myNewQueue.SendMessage(MessagePriority.Highest, "Second Message Body.");

            // Receive messages from a queue.
            myNewQueue.ReceiveMessage();
            myNewQueue.ReceiveMessage();

            return;
        }

        //**************************************************
        // Sends a string message to a queue.
        //**************************************************
        
        public void SendMessage(MessagePriority priority, string messageBody)
        {

            // Connect to a queue on the local computer.
            MessageQueue myQueue = new MessageQueue(".\\myQueue");

            // Create a new message.
            Message myMessage = new Message();

            if(priority > MessagePriority.Normal)
            {
                myMessage.Body = "High Priority: " + messageBody;
            }
            else
            {
                myMessage.Body = messageBody;
            }

            // Set the priority of the message.
            myMessage.Priority = priority;

            // Send the Order to the queue.
            myQueue.Send(myMessage);

            return;
        }

        //**************************************************
        // Receives a message.
        //**************************************************
        
        public  void ReceiveMessage()
        {
            // Connect to the a queue on the local computer.
            MessageQueue myQueue = new MessageQueue(".\\myQueue");

            // Set the queue to read the priority. By default, it
            // is not read.
            myQueue.MessageReadPropertyFilter.Priority = true;

            // Set the formatter to indicate body contains a string.
            myQueue.Formatter = new XmlMessageFormatter(new Type[]
                {typeof(string)});
            
            try
            {
                // Receive and format the message.
                Message myMessage =	myQueue.Receive();

                // Display message information.
                Console.WriteLine("Priority: " +
                    myMessage.Priority.ToString());
                Console.WriteLine("Body: " +
                    myMessage.Body.ToString());
            }
            
            catch (MessageQueueException)
            {
                // Handle Message Queuing exceptions.
            }

            // Handle invalid serialization format.
            catch (InvalidOperationException e)
            {
                Console.WriteLine(e.Message);
            }
            
            // Catch other exceptions as necessary.

            return;
        }
    }
}

Комментарии

Перечисление MessagePriority используется свойством MessagePriority класса . Это свойство влияет на то, как очередь сообщений обрабатывает сообщение как в пути, так и по достижении места назначения. Сообщениям с более высоким приоритетом отдается предпочтение при маршрутизации, и они помещаются ближе к началу конечной очереди. Сообщения, имеющие одинаковый приоритет, помещаются в очередь в порядке поступления.

Когда очередь сообщений направляет сообщение в общедоступную очередь, уровень приоритета сообщения добавляется к уровню приоритета общедоступной очереди (доступ к которому можно получить через MessageQueue свойство класса BasePriority ). Уровень приоритета очереди не влияет на то, как сообщения помещаются в очередь, а только на то, как очередь сообщений обрабатывает сообщение в пути.

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

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

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

Продукт Версии
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

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