MessagePriority 枚举

定义

指定消息队列在消息传递到队列的过程中应用于该消息的优先级,以及指定何时将消息插入目标队列。

C#
public enum MessagePriority
继承
MessagePriority

字段

名称 说明
AboveNormal 4

位于 HighNormal 消息优先级之间。

High 5

高消息优先级。

Highest 7

最高消息优先级。

Low 2

低消息优先级。

Lowest 0

最低消息优先级。

Normal 3

普通消息优先级。

VeryHigh 6

位于 HighestHigh 消息优先级之间。

VeryLow 1

位于 LowLowest 消息优先级之间。

示例

以下示例将两条不同优先级的消息发送到队列,并随后检索它们。

C#
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枚举由Message类的 Priority 属性使用。 此属性影响消息队列在路由和到达目标时处理消息的方式。 在路由过程中,优先级高的消息具有优先权,将会插入到目标队列的队首。 而具有相同优先级的消息则会按照到达的先后时间插入到队列中。

当消息队列将消息路由到公共队列时,消息的优先级将添加到公共队列 (可通过类的 BasePriority 属性) 访问MessageQueue的优先级。 队列的优先级对消息在队列中的放置方式没有影响,只影响消息队列在路由过程中处理消息的方式。

基本优先级仅适用于公共队列。 对于专用队列,基本优先级始终为零。

只能为非事务性消息设置有意义的优先级。 消息队列自动将事务消息的优先级设置为 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

另请参阅