次の方法で共有


MessagePriority 列挙体

メッセージがキューへ送信されている間、およびメッセージを送信先キューに挿入するときに、メッセージ キューによってメッセージに適用される優先順位を指定します。

<Serializable>
Public Enum MessagePriority
[C#]
[Serializable]
public enum MessagePriority
[C++]
[Serializable]
__value public enum MessagePriority
[JScript]
public
   Serializable
enum MessagePriority

解説

MessagePriority 列挙体は、 Message クラスの Priority プロパティによって使用されます。このプロパティは、送信途中のメッセージや送信先に到達した後のメッセージにおいて、メッセージ キューによるメッセージの処理方法に影響します。優先順位の高いメッセージほど、送信中に優先権が与えられ、送信先キューの中の先頭近くに挿入されます。優先順位の同じメッセージは、到達時刻に応じてキュー内に配置されます。

メッセージ キューがメッセージをパブリック キューに送信するときに、メッセージの優先順位が (MessageQueue クラスの BasePriority プロパティを通じてアクセスできる) パブリック キューの優先順位に追加されます。キューの優先順位は、キュー内でのメッセージの配置には影響を与えず、メッセージ キューによる送信中のメッセージの処理方法にだけ影響します。

メモ   基本優先順位は、パブリック キューだけに適用されます。プライベート キューの基本優先順位は常に 0 です。

メッセージの優先順位を設定することが意味を持つのは、非トランザクション メッセージの場合だけです。トランザクション メッセージの優先順位は、メッセージ キューによって自動的に Lowest に設定されます。つまり、トランザクション メッセージの優先順位は無視されます。

メンバ

メンバ名 説明
AboveNormal HighNormal の間のメッセージ優先順位。
High 高い優先順位。
Highest 最も高い優先順位。
Low 低い優先順位。
Lowest 最も低い優先順位。
Normal 通常のメッセージ優先順位。
VeryHigh HighestHigh の間のメッセージ優先順位。
VeryLow LowLowest の間のメッセージ優先順位。

使用例

[Visual Basic, C#, C++] 優先度が異なる 2 つのメッセージをキューに送信し、順番に取得する例を次に示します。

 
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] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Messaging

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System.Messaging (System.Messaging.dll 内)

参照

System.Messaging 名前空間 | Message.Priority | MessageQueue.BasePriority