Export (0) Print
Expand All
Expand Minimize
This topic has not yet been rated - Rate this topic

MessagePriority Enumeration

Specifies the priority Message Queuing applies to a message while it is en route to a queue, and when inserting the message into the destination queue.

Namespace: System.Messaging
Assembly: System.Messaging (in system.messaging.dll)

public enum MessagePriority
public enum MessagePriority
public enum MessagePriority
 Member nameDescription
Supported by the .NET Compact FrameworkAboveNormalBetween High and Normal message priority. 
Supported by the .NET Compact FrameworkHighHigh message priority. 
Supported by the .NET Compact FrameworkHighestHighest message priority. 
Supported by the .NET Compact FrameworkLowLow message priority. 
Supported by the .NET Compact FrameworkLowestLowest message priority. 
Supported by the .NET Compact FrameworkNormalNormal message priority. 
Supported by the .NET Compact FrameworkVeryHighBetween Highest and High message priority. 
Supported by the .NET Compact FrameworkVeryLowBetween Low and Lowest message priority. 

The MessagePriority enumeration is used by the Message class's Priority property. This property affects how Message Queuing handles the message both while it is en route and once it reaches its destination. Higher-priority messages are given preference during routing and inserted toward the front of the destination queue. Messages with the same priority are placed in the queue according to their arrival time.

When Message Queuing routes a message to a public queue, the priority level of the message is added to the priority level of the public queue (which you can access through the MessageQueue class's BasePriority property). The priority level of the queue has no effect on how messages are placed in the queue, only on how Message Queuing handles the message while en route.

Base priority applies only to public queues. For a private queue, the base priority is always zero.

You can set a meaningful priority only for non-transactional messages. Message Queuing automatically sets the priority for transactional messages to Lowest, which causes transactional message priority to be ignored.

The following example sends two messages of different priorities to the queue, and retrieves them subsequently.

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;
		}
	}
}

package MyProject;

import System.*;
import System.Messaging.*;

/// <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(String[] args)
    {
        // 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;
    } //main

    //**************************************************
    // 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.CompareTo(MessagePriority.Normal) > 0) {
            myMessage.set_Body("High Priority: " + messageBody);
        }
        else {
            myMessage.set_Body(messageBody);
        }
        // Set the priority of the message.
        myMessage.set_Priority(priority);
        // Send the Order to the queue.
        myQueue.Send(myMessage);
        return;
    } //SendMessage

    //**************************************************
    // 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.get_MessageReadPropertyFilter().set_Priority(true);
        // Set the formatter to indicate body contains a string.
        myQueue.set_Formatter(new XmlMessageFormatter(new Type[]
            { String.class.ToType() }));
        try {
            // Receive and format the message. 
            Message myMessage = myQueue.Receive();
            // Display message information.
            Console.WriteLine("Priority: " + myMessage.get_Priority().ToString());
            Console.WriteLine("Body: " + myMessage.get_Body().ToString());
        }
        catch (MessageQueueException exp) {
            // Handle Message Queuing exceptions.
        }            
        // Handle invalid serialization format.
        catch (InvalidOperationException e) {
            Console.WriteLine(e.get_Message());
        }
        // Catch other exceptions as necessary.
        return;
    } //ReceiveMessage
} //MyNewQueue

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0
Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.