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.
[Visual Basic] <Serializable> Public Enum MessagePriority [C#] [Serializable] public enum MessagePriority [C++] [Serializable] __value public enum MessagePriority [JScript] public Serializable enum MessagePriority
Remarks
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.
Note 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 nontransactional messages. Message Queuing automatically sets the priority for transactional messages to Lowest, which causes transactional message priority to be ignored.
Members
| Member name | Description |
|---|---|
| AboveNormal | Between High and Normal message priority. |
| High | High message priority. |
| Highest | Highest message priority. |
| Low | Low message priority. |
| Lowest | Lowest message priority. |
| Normal | Normal message priority. |
| VeryHigh | Between Highest and High message priority. |
| VeryLow | Between Low and Lowest message priority. |
Example
[Visual Basic, C#, C++] The following example sends 2 messages of different priorities to the queue, and retrieves them subsequently.
[Visual Basic] Imports System Imports 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 Shared Sub Main() ' Create a new instance of the class. Dim myNewQueue As 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 End Sub 'Main '************************************************** ' Sends a string message to a queue. '************************************************** Public Sub SendMessage(priority As MessagePriority, messageBody As String) ' Connect to a queue on the local computer. Dim myQueue As New MessageQueue(".\myQueue") ' Create a new message. Dim myMessage As New Message() If priority > MessagePriority.Normal Then myMessage.Body = "High Priority: " + messageBody Else myMessage.Body = messageBody End If ' Set the priority of the message. myMessage.Priority = priority ' Send the Order to the queue. myQueue.Send(myMessage) Return End Sub 'SendMessage '************************************************** ' Receives a message. '************************************************** Public Sub ReceiveMessage() ' Connect to the a queue on the local computer. Dim myQueue As 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() {GetType(String)}) Try ' Receive and format the message. Dim myMessage As Message = myQueue.Receive() ' Display message information. Console.WriteLine(("Priority: " + myMessage.Priority.ToString())) Console.WriteLine(("Body: " + myMessage.Body.ToString())) Catch ' Handle Message Queuing exceptions. ' Handle invalid serialization format. Catch e As InvalidOperationException Console.WriteLine(e.Message) End Try ' Catch other exceptions as necessary. Return End Sub 'ReceiveMessage End Class 'MyNewQueue End Namespace 'MyProject [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; } } } [C++] #using <mscorlib.dll> #using <system.dll> #using <system.messaging.dll> using namespace System; using namespace System::Messaging; __gc class MyNewQueue { public: void SendMessage(MessagePriority priority, String* messageBody) { // Connect to a queue on the local computer. MessageQueue* myQueue = new MessageQueue(S".\\myQueue"); // Create a new message. Message* myMessage = new Message(); if (priority > MessagePriority::Normal) { myMessage->Body = S"High Priority: {0}", messageBody; } else myMessage->Body = messageBody; // Set the priority of the message. myMessage->Priority = priority; // Send the Order to the queue. myQueue->Send(myMessage); return; } public: void ReceiveMessage() { // Connect to the a queue on the local computer. MessageQueue* myQueue = new MessageQueue(S".\\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*. Type* p __gc[] = new Type* __gc[1]; p[0] = __typeof(String); myQueue->Formatter = new XmlMessageFormatter( p ); try { // Receive and format the message. Message* myMessage = myQueue->Receive(); // Display message information. Console::WriteLine(S"Priority: {0}", __box(myMessage->Priority)); Console::WriteLine(S"Body: {0}", myMessage->Body); } catch (MessageQueueException*) { // Handle Message Queuing exceptions. } // Handle invalid serialization format. catch (InvalidOperationException* e) { Console::WriteLine(e->Message); } // Catch other exceptions as necessary. return; } }; int main() { // Create a new instance of the class. MyNewQueue* myNewQueue = new MyNewQueue(); // Send messages to a queue. myNewQueue->SendMessage(MessagePriority::Normal, S"First Message Body."); myNewQueue->SendMessage(MessagePriority::Highest, S"Second Message Body."); // Receive messages from a queue. myNewQueue->ReceiveMessage(); myNewQueue->ReceiveMessage(); return 0;
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Namespace: System.Messaging
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
Assembly: System.Messaging (in System.Messaging.dll)
See Also
System.Messaging Namespace | Message.Priority | MessageQueue.BasePriority