英語で読む

次の方法で共有


SendMSMQMessage

SendMSMQMessage サンプルは、.NET ベースのアプリケーションから MSMQ ポートにメッセージを送信する方法を示します。 また、MSMQ 受信場所を使用するように Microsoft BizTalk Serverを構成する方法についても説明します。

メッセージ キューの多くの操作が非同期であることに注意が必要です。 つまり、要求された操作が完全に完了する前に、多くの MSMQ API 呼び出し ( System.Messaging.MessageQueue.Send など) が呼び出し元に戻ります。 MSMQ には、操作完了後にアプリケーションにフィードバックを配信するメカニズムが用意されています。 このメカニズムには、"管理 キュー" の使用が含まれます。MSMQ は、管理 キュー内のメッセージの形式でフィードバックを返します。 MSMQ がフィードバックを返す管理キューは、元の MSMQ API 呼び出しが行われたときに指定されます。 そのため、たとえば、System.Messaging.MessageQueue.Send API を使用してメッセージを送信する場合、アプリケーションは System.Messaging.MessageQueue.Send の呼び出しで渡されたメッセージのPROPID_M_ADMIN_QUEUE メッセージ プロパティを使用して、管理 キューの名前を指定できます。 アプリケーションは System.Messaging.MessageQueue.Send 呼び出しで正常なリターン コードを取得できますが、その後メッセージ送信操作が失敗した場合、MSMQ は指定した管理 キューにその旨のメッセージを書き込みます。 アプリケーションで 管理 キューが指定されていない場合、送信エラーが発生するとメッセージが失われ、診断キャプチャされません。実際には、メッセージは証拠なしで消えます。 MSMQ には、トランザクション キューへの非トランザクション送信など、このようなエラーが発生する原因となるエラーが多数あります。

このサンプルのコンテキストでは、メッセージが送信されるキューに対して指定されたトランザクション サポートと一致する System.Messaging.MessageQueue.Send の呼び出しで、コードでトランザクションの種類を指定することが重要です。 この処理が行われない場合や、(このサンプルのように) 管理キューが指定されていない場合、MSMQ は何の通知もなく送信メッセージを破棄します (つまり、アプリケーションにエラー コードが返されたり、イベント ログに診断が書き込まれたりすることはありません)。

このサンプルの場所

<Samples Path>\AdaptersUsage\SendMSMQMessage\

次の表は、このサンプルのファイルとその目的を示しています。

ファイル 説明
App.ico、AssemblyInfo.cs、SendMSMQMessage.csproj、SendMSMQMessage.sln このサンプルの単純なグラフィカル アプリケーション用のプロジェクト、ソリューション、および関連ファイルを提供します。
Form1.cs、Form1.resx このサンプルの単純なグラフィカル アプリケーション用の Microsoft Visual C#.NET ソース ファイルとフォーム ファイルを提供します。

このサンプルの使用方法

このサンプルに含まれている単純なグラフィカル アプリケーションのコードは、 から BizTalk Server 内の MSMQ 受信場所にメッセージを送信する方法の例として使用できます。Microsoft Office などの NET 対応アプリケーション、ASP.NET ページなど。

サンプルのビルドおよび初期化

実行可能サンプル ファイルをビルドするには

  1. Visual Studio を使用して、ソリューション ファイル SendMSMQMessage.sln を開きます。

  2. [ビルド] メニューの [ソリューションのビルド] をクリックします。

BizTalk Server の構成と MSMQ キューの作成

BizTalk Serverを構成し、サンプルを実行するための MSMQ キューを作成するには、次の手順に従います。

Windows Server 2008 R2 または Windows Server 2008 SP2 で MSMQ キューを作成するには

  1. [ スタート] をクリックし、[ コンピューター] を右クリックし、[ 管理] をクリックします。

  2. [機能] ノードを展開します。 メッセージ キューがインストールされていない場合は、[機能] を右クリックし、[機能の追加] を選択します。 [メッセージ キュー] をオンにし、[次へ] をクリックし、[インストール] をクリックして、そのシステムに MSMQ をインストールします。

  3. [メッセージ キュー] ノードを展開します。

  4. [ プライベート キュー ] ノードを右クリックし、[ 新規] をクリックし、[ プライベート キュー] をクリックします。

  5. [ キュー名] に「」と入力します test。 [トランザクション チェック] ボックスが選択されていることを確認します。

  6. [OK] をクリックします。

Windows 7 または Windows Vista SP2 で MSMQ キューを作成するには

  1. [ スタート] をクリックし、[ コンピューター] を右クリックし、[ 管理] をクリックします。

  2. [ サービスとアプリケーション] を展開し、[ メッセージ キュー ] ノードを展開します。

    注意

    メッセージ キューがコンピューターにインストールされていない場合は、[プログラム>プログラムと機能のコントロール パネル>] に移動し、[Windows の機能のオンとオフを切り替える] を選択します。 [Microsoft Message Queue (MSMQ) Server]\(Microsoft Message Queue (MSMQ)サーバー\) のすべての機能を確認し、[OK] をクリックします

  3. [ プライベート キュー ] ノードを右クリックし、[ 新規] をクリックし、[ プライベート キュー] をクリックします。

  4. [ キュー名] に「 test」と入力します。 [トランザクション チェック] ボックスが選択されていることを確認します。

  5. [OK] をクリックします。

BizTalk Server を構成するには

  1. メッセージを受信するフォルダーを選択します。 次の手順では、C:\Demo\Report を選択していることを前提としていますが、別のフォルダーに必要に応じて手順を調整できます。

  2. BizTalk Server管理コンソールを開きます。

  3. MSMQSample という名前の新しいアプリケーションを作成します。

  4. [ 受信ポート] を右クリックし、[ 新規] をクリックし、[ 一方向の受信ポート] をクリックします。

  5. [ 受信ポートのプロパティ ] ダイアログ ボックスの [名前 ] ボックスに 「MyReceivePort」と入力し、[OK] をクリック します

  6. [ 受信場所] を右クリックし、[ 新規] をクリックし、[ 一方向の受信場所] をクリックします。 [ 受信ポートの選択 ] ダイアログ ボックスで、先ほど作成した受信ポートを選択し、[OK] をクリック します

  7. [ 受信場所のプロパティ ] ダイアログ ボックスの [名前 ] ボックスに、受信ポートの名前 ( MSMQReceiveLocation など) を入力します。

  8. [ 受信場所のプロパティ ] ダイアログ ボックスで、トランスポートの種類として [ MSMQ ] を選択します。

  9. [ 構成] を クリックして、[ MSMQ トランスポートのプロパティ ] ダイアログ ボックスを開きます。 [キュー] を にlocalhost\private$\test設定し、[トランザクション] を にTrue設定し、[OK] をクリックします

  10. アプリケーションを展開し、[ 送信ポート] を選択し、[ 新規] を選択し、[ 静的な一方向の送信ポート] を選択します。

  11. [ 送信ポートのプロパティ ] ダイアログ ボックスの [名前 ] ボックスに、送信ポートの名前 ( MySendPort など) を入力します。

  12. [トランスポートの種類] プロパティを FILE に設定します

  13. [ 構成] を クリックして、[ ファイル トランスポートのプロパティ ] ダイアログ ボックスを開きます。

  14. [ ファイル トランスポートのプロパティ ] ダイアログ ボックスで、[ 宛先フォルダー] プロパティを [C:\Demo\Report] に設定し、他のプロパティの既定の設定をそのままにして、[OK] をクリック します

  15. [ フィルター] を選択し、[ プロパティ ] を [BTS] に設定して新しい行を追加します 。ReceivePortName[演算子] 列は に==設定したままにし、[] 列を [MyReceivePort] に設定し、[OK] をクリックします

  16. 新しい送信ポートを右クリックし、[ 参加] をクリックします。

  17. 新しい送信ポートをもう一度右クリックし、[ 開始] をクリックします。

  18. 新しい受信場所を右クリックし、[ 有効にする] をクリックします。

    BizTalk Serverは、このサンプルを操作する準備ができました。

サンプルの実行

次の手順を使用して、SendMSMQMessage サンプルを実行します。

サンプルを実行するには

  1. コマンド ウィンドウで、次のフォルダーに移動します。

    <サンプル パス>\AdaptersUsage\SendMSMQMessage\bin\Debug

  2. SendMSMQMessage.exe ファイルを実行すると、このサンプルのユーザー インターフェイスを提供するグラフィカル アプリケーションが起動します。

  3. グラフィカル アプリケーションの [BizTalk コンピューター名 ] ボックスに、ローカル コンピューターの名前を入力します。

  4. [ラップされた送信] オプションを試します。

    1. 必要に応じて、[ メッセージ本文 ] ボックスのテキストを変更します。

    2. [ ラップされた送信] をクリックします。

      操作が成功すると、次の情報が表示されます。

    • ボタンのすぐ上のボックスに、 "成功 " という単語が赤いフォントで表示されます。

    • 送信先フォルダー C:\Demo\Reports にファイルが表示されます。 このファイルには、.NET メッセージ キュー ライブラリによって単純な XML タグでラップされた [メッセージ 本文 ] ボックスのテキストが含まれています。

      操作に失敗すると、ボタンのすぐ上のボックスにエラー メッセージが表示されます。

  5. [ Send Exact]\(正確に送信\) オプションを試します。

    1. 必要に応じて、[ メッセージ本文 ] ボックスのテキストを変更します。

    2. [ 正確に送信] をクリックします。

      操作が成功すると、次の情報が表示されます。

    • ボタンのすぐ上のボックスに、 "成功 " という単語が赤いフォントで表示されます。

    • 送信先フォルダー C:\Demo\Reports にファイルが表示されます。 このファイルには、テキスト ボックスに表示されるのとまったく同じように、[ メッセージ本文 ] ボックスのテキストが含まれています。

      操作に失敗すると、ボタンのすぐ上のボックスにエラー メッセージが表示されます。

参照

アダプタ サンプル – 使用法