Message クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
メッセージ キューのメッセージを定義するのに必要なプロパティへのアクセスを実現します。
public ref class Message : System::ComponentModel::Component
public class Message : System.ComponentModel.Component
type Message = class
inherit Component
Public Class Message
Inherits Component
- 継承
例
次のコード例では、 を使用してメッセージ本文を書式設定する方法を BinaryMessageFormatter示します。
using System;
using System.Messaging;
using System.Drawing;
using System.IO;
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();
// Create a queue on the local computer.
CreateQueue(".\\myQueue");
// Send a message to a queue.
myNewQueue.SendMessage();
// Receive a message from a queue.
myNewQueue.ReceiveMessage();
return;
}
//**************************************************
// Creates a new queue.
//**************************************************
public static void CreateQueue(string queuePath)
{
try
{
if(!MessageQueue.Exists(queuePath))
{
MessageQueue.Create(queuePath);
}
else
{
Console.WriteLine(queuePath + " already exists.");
}
}
catch (MessageQueueException e)
{
Console.WriteLine(e.Message);
}
}
//**************************************************
// Sends an image to a queue, using the BinaryMessageFormatter.
//**************************************************
public void SendMessage()
{
try{
// Create a new bitmap.
// The file must be in the \bin\debug or \bin\retail folder, or
// you must give a full path to its location.
Image myImage = Bitmap.FromFile("SentImage.bmp");
// Connect to a queue on the local computer.
MessageQueue myQueue = new MessageQueue(".\\myQueue");
Message myMessage = new Message(myImage, new BinaryMessageFormatter());
// Send the image to the queue.
myQueue.Send(myMessage);
}
catch(ArgumentException e)
{
Console.WriteLine(e.Message);
}
return;
}
//**************************************************
// Receives a message containing an image.
//**************************************************
public void ReceiveMessage()
{
try
{
// Connect to the a queue on the local computer.
MessageQueue myQueue = new MessageQueue(".\\myQueue");
// Set the formatter to indicate body contains an Order.
myQueue.Formatter = new BinaryMessageFormatter();
// Receive and format the message.
System.Messaging.Message myMessage = myQueue.Receive();
Bitmap myImage = (Bitmap)myMessage.Body;
// This will be saved in the \bin\debug or \bin\retail folder.
myImage.Save("ReceivedImage.bmp",System.Drawing.Imaging.ImageFormat.Bmp);
}
catch (MessageQueueException)
{
// Handle Message Queuing exceptions.
}
// Handle invalid serialization format.
catch (InvalidOperationException e)
{
Console.WriteLine(e.Message);
}
catch (IOException e)
{
// Handle file access exceptions.
}
// Catch other exceptions as necessary.
return;
}
}
}
Imports System.Messaging
Imports System.Drawing
Imports System.IO
Namespace MyProj
_
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()
' Create a queue on the local computer.
CreateQueue(".\myQueue")
' Send a message to a queue.
myNewQueue.SendMessage()
' Receive a message from a queue.
myNewQueue.ReceiveMessage()
Return
End Sub
'**************************************************
' Creates a new queue.
'**************************************************
Public Shared Sub CreateQueue(queuePath As String)
Try
If Not MessageQueue.Exists(queuePath) Then
MessageQueue.Create(queuePath)
Else
Console.WriteLine((queuePath + " already exists."))
End If
Catch e As MessageQueueException
Console.WriteLine(e.Message)
End Try
End Sub
'**************************************************
' Sends an image to a queue, using the BinaryMessageFormatter.
'**************************************************
Public Sub SendMessage()
Try
' Create a new bitmap.
' The file must be in the \bin\debug or \bin\retail folder, or
' you must give a full path to its location.
Dim myImage As Image = Bitmap.FromFile("SentImage.bmp")
' Connect to a queue on the local computer.
Dim myQueue As New MessageQueue(".\myQueue")
Dim myMessage As New Message(myImage, New BinaryMessageFormatter())
' Send the image to the queue.
myQueue.Send(myMessage)
Catch e As ArgumentException
Console.WriteLine(e.Message)
End Try
Return
End Sub
'**************************************************
' Receives a message containing an image.
'**************************************************
Public Sub ReceiveMessage()
Try
' Connect to the a queue on the local computer.
Dim myQueue As New MessageQueue(".\myQueue")
' Set the formatter to indicate body contains an Order.
myQueue.Formatter = New BinaryMessageFormatter()
' Receive and format the message.
Dim myMessage As System.Messaging.Message = myQueue.Receive()
Dim myImage As Bitmap = CType(myMessage.Body, Bitmap)
' This will be saved in the \bin\debug or \bin\retail folder.
myImage.Save("ReceivedImage.bmp", System.Drawing.Imaging.ImageFormat.Bmp)
'Catch
' Handle Message Queuing exceptions.
' Handle invalid serialization format.
Catch e As InvalidOperationException
Console.WriteLine(e.Message)
Catch e As IOException
End Try
' Handle file access exceptions.
' Catch other exceptions as necessary.
Return
End Sub
End Class
End Namespace 'MyProj
次のコード例では、 を使用してメッセージ本文を書式設定する方法を XmlMessageFormatter示します。
#using <system.dll>
#using <system.messaging.dll>
#using <system.drawing.dll>
using namespace System;
using namespace System::Messaging;
using namespace System::Drawing;
using namespace System::IO;
ref class Order
{
public:
int orderId;
DateTime orderTime;
};
ref class MyNewQueue
{
public:
static void CreateQueue( String^ queuePath )
{
try
{
if ( !MessageQueue::Exists( queuePath ) )
{
MessageQueue::Create( queuePath );
}
else
{
Console::WriteLine( "{0} already exists.", queuePath );
}
}
catch ( MessageQueueException^ e )
{
Console::WriteLine( e->Message );
}
}
void SendMessage()
{
try
{
// Create a new order and set values.
Order^ sentOrder = gcnew Order;
sentOrder->orderId = 3;
sentOrder->orderTime = DateTime::Now;
// Connect to a queue on the local computer.
MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );
// Create the new order.
Message^ myMessage = gcnew Message( sentOrder );
// Send the order to the queue.
myQueue->Send( myMessage );
}
catch ( ArgumentException^ e )
{
Console::WriteLine( e->Message );
}
return;
}
void ReceiveMessage()
{
// Connect to the a queue on the local computer.
MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );
// Set the formatter to indicate body contains an Order.
array<Type^>^p = gcnew array<Type^>(1);
p[ 0 ] = Order::typeid;
myQueue->Formatter = gcnew XmlMessageFormatter( p );
try
{
// Receive and format the message.
Message^ myMessage = myQueue->Receive();
Order^ myOrder = dynamic_cast<Order^>(myMessage->Body);
// Display message information.
Console::WriteLine( "Order ID: {0}", myOrder->orderId );
Console::WriteLine( "Sent: {0}", myOrder->orderTime );
}
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 = gcnew MyNewQueue;
// Create a queue on the local computer.
MyNewQueue::CreateQueue( ".\\myQueue" );
// Send a message to a queue.
myNewQueue->SendMessage();
// Receive a message from a queue.
myNewQueue->ReceiveMessage();
return 0;
}
using System;
using System.Messaging;
using System.Drawing;
using System.IO;
namespace MyProject
{
// The following example
// sends to a queue and receives from a queue.
public class Order
{
public int orderId;
public DateTime orderTime;
};
/// <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();
// Create a queue on the local computer.
CreateQueue(".\\myQueue");
// Send a message to a queue.
myNewQueue.SendMessage();
// Receive a message from a queue.
myNewQueue.ReceiveMessage();
return;
}
//**************************************************
// Creates a new queue.
//**************************************************
public static void CreateQueue(string queuePath)
{
try
{
if(!MessageQueue.Exists(queuePath))
{
MessageQueue.Create(queuePath);
}
else
{
Console.WriteLine(queuePath + " already exists.");
}
}
catch (MessageQueueException e)
{
Console.WriteLine(e.Message);
}
}
//**************************************************
// Sends an Order to a queue.
//**************************************************
public void SendMessage()
{
try
{
// Create a new order and set values.
Order sentOrder = new Order();
sentOrder.orderId = 3;
sentOrder.orderTime = DateTime.Now;
// Connect to a queue on the local computer.
MessageQueue myQueue = new MessageQueue(".\\myQueue");
// Create the new order.
Message myMessage = new Message(sentOrder);
// Send the order to the queue.
myQueue.Send(myMessage);
}
catch(ArgumentException e)
{
Console.WriteLine(e.Message);
}
return;
}
//**************************************************
// Receives a message containing an order.
//**************************************************
public void ReceiveMessage()
{
// Connect to the a queue on the local computer.
MessageQueue myQueue = new MessageQueue(".\\myQueue");
// Set the formatter to indicate body contains an Order.
myQueue.Formatter = new XmlMessageFormatter(new Type[]
{typeof(MyProject.Order)});
try
{
// Receive and format the message.
Message myMessage = myQueue.Receive();
Order myOrder = (Order)myMessage.Body;
// Display message information.
Console.WriteLine("Order ID: " +
myOrder.orderId.ToString());
Console.WriteLine("Sent: " +
myOrder.orderTime.ToString());
}
catch (MessageQueueException)
{
// Handle Message Queuing exceptions.
}
// Handle invalid serialization format.
catch (InvalidOperationException e)
{
Console.WriteLine(e.Message);
}
// Catch other exceptions as necessary.
return;
}
}
}
Imports System.Messaging
Imports System.Drawing
Imports System.IO
' The following example
' sends to a queue and receives from a queue.
Public Class Order
Public orderId As Integer
Public orderTime As DateTime
End Class
' Provides a container class for the example.
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()
' Create a queue on the local computer.
CreateQueue(".\myQueue")
' Send a message to a queue.
myNewQueue.SendMessage()
' Receive a message from a queue.
myNewQueue.ReceiveMessage()
Return
End Sub
' Creates a new queue.
Public Shared Sub CreateQueue(queuePath As String)
Try
If Not MessageQueue.Exists(queuePath) Then
MessageQueue.Create(queuePath)
Else
Console.WriteLine((queuePath + " already exists."))
End If
Catch e As MessageQueueException
Console.WriteLine(e.Message)
End Try
End Sub
' Sends an Order to a queue.
Public Sub SendMessage()
Try
' Create a new order and set values.
Dim sentOrder As New Order()
sentOrder.orderId = 3
sentOrder.orderTime = DateTime.Now
' Connect to a queue on the local computer.
Dim myQueue As New MessageQueue(".\myQueue")
' Create the new order.
Dim myMessage As New Message(sentOrder)
' Send the order to the queue.
myQueue.Send(myMessage)
Catch e As ArgumentException
Console.WriteLine(e.Message)
End Try
Return
End Sub
' Receives a message containing an order.
Public Sub ReceiveMessage()
' Connect to the a queue on the local computer.
Dim myQueue As New MessageQueue(".\myQueue")
' Set the formatter to indicate body contains an Order.
myQueue.Formatter = New XmlMessageFormatter(New Type() {GetType(Order)})
Try
' Receive and format the message.
Dim myMessage As Message = myQueue.Receive()
Dim myOrder As Order = CType(myMessage.Body, Order)
' Display message information.
Console.WriteLine(("Order ID: " + myOrder.orderId.ToString()))
Console.WriteLine(("Sent: " + myOrder.orderTime.ToString()))
' Handle invalid serialization format.
Catch e As InvalidOperationException
Console.WriteLine(e.Message)
End Try
' Catch other exceptions as necessary.
Return
End Sub
End Class
注釈
クラスを Message 使用して、キューからメッセージをピークまたは受信したり、キューにメッセージを送信するときにメッセージ のプロパティを細かく制御したりできます。
MessageQueueメソッドと MessageQueue.Receive メソッドの両方MessageQueue.PeekがクラスのMessage新しいインスタンスMessageを作成し、インスタンスのプロパティを設定するため、キューからメッセージをピークまたは受信するときに クラスを使用します。 クラスの読み取り専用プロパティはキューからのメッセージの取得に適用されますが、読み取り/書き込みプロパティは Message メッセージの送受信に適用されます。 キューからメッセージをピークまたは受信すると MessageQueue 、その MessageReadPropertyFilter プロパティによって、取得されるメッセージのプロパティが決まります。
MessageQueueクラスの Send メソッドを使用すると、そのキューに送信されるメッセージの任意のオブジェクトの種類を指定できます。 インスタンスの DefaultPropertiesToSend プロパティをMessageQueue使用して、キューに送信される汎用メッセージの設定を指定できます。 設定の種類には、フォーマッタ、ラベル、暗号化、認証が含まれます。 受信確認メッセージとレポート メッセージに応答するようにメッセージング アプリケーションを調整するときに、適切な DefaultPropertiesToSend メンバーの値を指定することもできます。 インスタンスを Message 使用してキューにメッセージを送信すると、1 つのメッセージまたはメッセージごとに、これらのプロパティの多くに柔軟にアクセスして変更できます。 Message プロパティは よりも DefaultPropertiesToSend優先されます。
メッセージ データは、 プロパティにBody格納され、より小さい範囲の および Extension プロパティにAppSpecific格納されます。 メッセージ データが暗号化、シリアル化、または逆シリアル化されると、プロパティの内容のみが影響を Body 受けます。
プロパティの Body 内容は、指定した プロパティを使用して、メッセージの送信時に Formatter シリアル化されます。 シリアル化された内容は、 プロパティにあります BodyStream 。 たとえば、 プロパティを BodyStream 直接設定して、メッセージのデータ コンテンツとしてファイルを送信することもできます。 または Formatter プロパティはBody、メッセージを送信する前にいつでも変更でき、 を呼び出Sendすとデータが適切にシリアル化されます。
プロパティによって定義されるプロパティは、 MessageQueue.DefaultPropertiesToSend 型 Messageではないメッセージにのみ適用されます。 に プロパティMessageQueueをDefaultPropertiesToSend指定した場合、そのキューに送信されるインスタンス内の同じ名前のMessageプロパティは、これらの既定のプロパティは無視されます。
のインスタンスの初期プロパティ値の Message一覧については、 コンストラクターを Message 参照してください。
コンストラクター
Message() |
Message クラスの新しいインスタンスを空の本文で初期化します。 |
Message(Object) |
指定したオブジェクトをメッセージの本文にシリアル化するために XmlMessageFormatter を使用して、Message クラスの新しいインスタンスを初期化します。 |
Message(Object, IMessageFormatter) |
指定したオブジェクトをメッセージの本文にシリアル化するために指定したフォーマッタを使用して、Message クラスの新しいインスタンスを初期化します。 |
フィールド
InfiniteTimeout |
タイムアウトが存在しないことを指定します。 |
プロパティ
AcknowledgeType |
送信元アプリケーションに返す受信確認メッセージのタイプを取得または設定します。 |
Acknowledgment |
このメッセージが表す受信確認の分類を取得します。 |
AdministrationQueue |
メッセージ キューによって生成される受信確認メッセージを受け取るキューを取得または設定します。 |
AppSpecific |
アプリケーション固有の追加情報を取得または設定します。 |
ArrivedTime |
メッセージが送信先キューに到達した時刻を取得します。 |
AttachSenderId |
メッセージに送信者 ID を結び付ける必要があるかどうかを示す値を取得または設定します。 |
Authenticated |
メッセージが認証されたかどうかを示す値を取得します。 |
AuthenticationProviderName |
メッセージのデジタル署名を生成するのに使われる暗号化プロバイダーの名前を取得または設定します。 |
AuthenticationProviderType |
メッセージのデジタル署名を生成するのに使われる暗号化プロバイダーの種類を取得または設定します。 |
Body |
メッセージの内容を取得または設定します。 |
BodyStream |
メッセージの本文の情報を取得または設定します。 |
BodyType |
メッセージ本文に含まれるデータ型を取得または設定します。 |
CanRaiseEvents |
コンポーネントがイベントを発生させることがきるかどうかを示す値を取得します。 (継承元 Component) |
ConnectorType |
通常ではメッセージ キューによって設定されるメッセージ プロパティが、実際には送信元アプリケーションによって設定されたことを示す値を取得または設定します。 |
Container |
IContainer を含む Component を取得します。 (継承元 Component) |
CorrelationId |
元のメッセージを参照するために、受信確認メッセージ、レポート メッセージ、応答メッセージによって使われるメッセージ ID を取得または設定します。 |
DesignMode |
Component が現在デザイン モードかどうかを示す値を取得します。 (継承元 Component) |
DestinationQueue |
メッセージの目的の送信先キューを取得します。 |
DestinationSymmetricKey |
アプリケーションによって暗号化されるメッセージ、または外部キューに送信されるメッセージを暗号化するために使用する対称キーを取得または設定します。 |
DigitalSignature |
メッセージ キューがメッセージの認証に使用するデジタル署名を取得または設定します。 |
EncryptionAlgorithm |
プライベート メッセージの本文を暗号化するのに使われる暗号化アルゴリズムを取得または設定します。 |
Events |
Component に結び付けられているイベント ハンドラーのリストを取得します。 (継承元 Component) |
Extension |
メッセージに関連付けられているアプリケーション定義の追加情報を取得または設定します。 |
Formatter |
オブジェクトをメッセージ本文にシリアル化する、またはメッセージ本文からオブジェクトを逆シリアル化するのに使用する書式指定子を取得または設定します。 |
HashAlgorithm |
ハッシュ アルゴリズムを取得または設定します。メッセージ キューは、メッセージを認証するとき、またはメッセージのデジタル署名を作成するときに、ハッシュ アルゴリズムを使用します。 |
Id |
メッセージの ID を取得します。 |
IsFirstInTransaction |
そのメッセージがトランザクションで送信された最初のメッセージかどうかを示す値を取得します。 |
IsLastInTransaction |
メッセージがトランザクションで送信された最後のメッセージかどうかを示す値を取得します。 |
Label |
メッセージを記述するアプリケーション定義の Unicode 文字列を取得または設定します。 |
LookupId |
MSMQ 3.0 で導入されました。 メッセージの参照識別子を取得します。 |
MessageType |
メッセージの種類 ( |
Priority |
キュー内でのメッセージの格納場所を決定するのに使われる、メッセージの優先順位を取得または設定します。 |
Recoverable |
コンピューターの障害やネットワークの問題が発生したときにメッセージの配信が保証されるかどうかを示す値を取得または設定します。 |
ResponseQueue |
アプリケーションによって生成される応答メッセージを受け取るキューを取得または設定します。 |
SecurityContext |
メッセージのセキュリティ コンテキストを取得または設定します。 |
SenderCertificate |
メッセージを認証するのに使うセキュリティ証明書を取得または設定します。 |
SenderId |
送信元ユーザーの ID を取得します。 |
SenderVersion |
メッセージを送信するのに使われるメッセージ キューのバージョンを取得します。 |
SentTime |
メッセージが送信元キュー マネージャーによって送信されたときの、送信元コンピューター上の日付と時刻を取得します。 |
Site |
Component の ISite を取得または設定します。 (継承元 Component) |
SourceMachine |
メッセージの送信元のコンピューターを取得します。 |
TimeToBeReceived |
メッセージが送信先キューから受信されるまでの最大時間を取得または設定します。 |
TimeToReachQueue |
メッセージがキューに到達するまでの最大許容時間を取得または設定します。 |
TransactionId |
一部にメッセージを含むトランザクションの ID を取得します。 |
TransactionStatusQueue |
送信元コンピューター上のトランザクション ステータス キューを取得します。 |
UseAuthentication |
メッセージが送信前に認証された (または認証される必要がある) かどうかを示す値を取得または設定します。 |
UseDeadLetterQueue |
配信できなかったメッセージのコピーを配信不能キューに送信するかどうかを示す値を取得または設定します。 |
UseEncryption |
メッセージをプライベートにするかどうかを示す値を取得または設定します。 |
UseJournalQueue |
送信元のコンピューターの履歴にメッセージのコピーを保持するかどうかを示す値を取得または設定します。 |
UseTracing |
メッセージが送信先キューに移動していく途中でメッセージをトレースするかどうかを示す値を取得または設定します。 |
メソッド
CreateObjRef(Type) |
リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (継承元 MarshalByRefObject) |
Dispose() |
Component によって使用されているすべてのリソースを解放します。 (継承元 Component) |
Dispose(Boolean) |
Component によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。 (継承元 Component) |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetLifetimeService() |
古い.
対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
GetService(Type) |
Component またはその Container で提供されるサービスを表すオブジェクトを返します。 (継承元 Component) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
InitializeLifetimeService() |
古い.
このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
MemberwiseClone(Boolean) |
現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。 (継承元 MarshalByRefObject) |
ToString() |
Component の名前 (存在する場合) を格納する String を返します。 このメソッドはオーバーライドできません。 (継承元 Component) |
イベント
Disposed |
Dispose() メソッドの呼び出しによってコンポーネントが破棄されるときに発生します。 (継承元 Component) |
適用対象
こちらもご覧ください
.NET