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 | High と Normal の間のメッセージ優先順位。 |
High | 高い優先順位。 |
Highest | 最も高い優先順位。 |
Low | 低い優先順位。 |
Lowest | 最も低い優先順位。 |
Normal | 通常のメッセージ優先順位。 |
VeryHigh | Highest と High の間のメッセージ優先順位。 |
VeryLow | Low と Lowest の間のメッセージ優先順位。 |
使用例
[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