Message クラス

定義

メッセージ キューのメッセージを定義するのに必要なプロパティへのアクセスを実現します。

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.DefaultPropertiesToSendMessageではないメッセージにのみ適用されます。 に プロパティMessageQueueDefaultPropertiesToSend指定した場合、そのキューに送信されるインスタンス内の同じ名前の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

メッセージの種類 (NormalAcknowledgment、または Report のいずれか) を取得します。

Priority

キュー内でのメッセージの格納場所を決定するのに使われる、メッセージの優先順位を取得または設定します。

Recoverable

コンピューターの障害やネットワークの問題が発生したときにメッセージの配信が保証されるかどうかを示す値を取得または設定します。

ResponseQueue

アプリケーションによって生成される応答メッセージを受け取るキューを取得または設定します。

SecurityContext

メッセージのセキュリティ コンテキストを取得または設定します。

SenderCertificate

メッセージを認証するのに使うセキュリティ証明書を取得または設定します。

SenderId

送信元ユーザーの ID を取得します。

SenderVersion

メッセージを送信するのに使われるメッセージ キューのバージョンを取得します。

SentTime

メッセージが送信元キュー マネージャーによって送信されたときの、送信元コンピューター上の日付と時刻を取得します。

Site

ComponentISite を取得または設定します。

(継承元 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)

適用対象

こちらもご覧ください