次の方法で共有


キューの参照に関する推奨事項

更新 : 2007 年 11 月

MessageQueue コンポーネントのインスタンスを作成する場合、コンポーネントがやり取りするキューを指定する必要があります。コードでキューを参照するには、次の 3 つの方法があります。

  • パスによる参照。キューへのパスは、そのキューのコンピュータ名およびキュー名を一意に識別します。

  • 形式名による参照。キューの一意な識別子であり、キューの作成時に MSMQ によって生成されるか、または後でアプリケーションによって生成されます。

  • ラベルによる参照。キューの作成時にキュー管理者によって割り当てられるキューの説明的な名前であり、一意であるとは限りません。

MessageQueue コンポーネントの新しいインスタンスを作成せずに、新しいキューを作成するには、パスを使用する必要があります。形式名とラベルは、キューの作成後にメッセージ キュー システムによって割り当てられます。ただし、コードまたは [ツールボックス] で既存のキューを参照する場合は、参照方法を選択できます。選択した方法は、コンポーネントの Path プロパティに格納されます。

パスによるキューの参照

キューへのパスは servername\queuename という形式になります。キューへのパスは、常に一意です。各種のキューに対して使用されるパス情報を次の表に示します。

キューの種類

パスの構文

パブリック キュー

<コンピュータ名>\QueueName

プライベート キュー

<コンピュータ名>\Private$\QueueName

ジャーナル キュー

<コンピュータ名>\QueueName\Journal$

コンピュータのジャーナル キュー

<コンピュータ名>\Journal$

コンピュータの配信不能キュー

<コンピュータ名>\Deadletter$

コンピュータのトランザクション配信不能キュー

<コンピュータ名>\XactDeadletter$

"." はローカル コンピュータ名を表します。したがって、"YourMachine\MyQueue" は ".\MyQueue" に相当します。

パスを使用してキューを参照する場合の注意事項をいくつか示します。

  • メッセージ キュー サーバー上のドメイン コントローラが、パスによって参照されているキューに対する操作を受信した場合、ドメイン コントローラはパスを解決して目的のキューの形式名を決定する必要があります。その結果、キューを直接形式名で参照した場合に比べて、パフォーマンスがやや遅くなります。

  • 使用するコンポーネントを XML Web サービスとしてデザインする場合は、パスではなく形式名を使用してキューを参照することで最適なパフォーマンスが得られます。

  • キューが接続されていないときにメッセージを送信する場合は、キューをパスで参照することはできません。非接続型メッセージは、形式名を使用して送信する必要があります。

キューへのパスは、MessageQueue 基本クラスの 2 つの異なるプロパティ、MachineName プロパティと QueueName プロパティを照会し、その結果を組み合わせることによって取得できます。

コードでパスによってキューを参照するための構文は、次のようになります。

MessageQueue1.Path = "YourMachine\MyQueue"
     MessageQueue1.Path = @"YourMachine\MyQueue";
ktb2ecsw.alert_note(ja-jp,VS.90).gifメモ :

C# では、@".\MyQueue" 構文の代わりに、".\\MyQueue" を使用しても同じ結果が得られます。@ 記号はリテラル文字列を示します。詳細については、「string (C# リファレンス)」を参照してください。

形式名によるキューの参照

形式名の形式は、キューがパブリックかプライベートかを示す文字列から始まり、キューに対して生成された GUID、および必要に応じてその他の識別子が続きます。各種のキューに対して使用されるパス情報を次の表に示します。

キューの種類

形式名の構文

パブリック キュー

FORMATNAME:PUBLIC=QueueGUID

プライベート キュー

FORMATNAME:PRIVATE=MachineGUID\QueueNumber

ジャーナル キュー

FORMATNAME:PUBLIC=QueueGUID;JOURNAL   

または

FORMATNAME:PRIVATE=MachineGUID\QueueNumber;JOURNAL

形式名は、自分でキューに割り当てるのではなく、キューの作成時にキュー マネージャによって生成されます。形式名によるキューの参照は、キューをパスで参照するときと違ってサーバー上のドメイン コントローラが参照を解釈する必要がないため、キューにアクセスする最も直接的な方法です。

形式名によってキューを参照する場合のヒントをいくつか示します。

  • キューがオフラインのときにはパスを解決できないため、非接続型キューに対してメッセージを送信する場合は、パスではなく形式名でキューを参照する必要があります。

  • ネットワークのトポロジーが変更された場合や、キューが削除されて再作成された場合には、形式名が無効になることもあります。

MessageQueue クラスの FormatName プロパティを照会することにより、キューの形式名を取得できます。

コードで形式名によってキューを参照するための構文は、次のようになります。

MessageQueue1.Path = _
   "FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75"
     MessageQueue1.Path =
           "FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75";

ラベルによるキューの参照

管理者によってキューに与えられる説明的なテキスト ラベルを使用して、キューを参照することもできます。ラベルは一意であるとは限らないため、ラベルを使用して特定のキューに接続しようとしたときに名前の競合があると、エラーが返されます。

ラベルは、キューをコンピュータ間で移動する場合に便利です。キューをラベルだけで参照している場合は、キューを新しい場所に移動した後でも、新しいコンピュータ上に同じラベルのキューがほかに存在しない限り、すべての操作が引き続き正しく機能します。同じラベルのキューが存在する場合、Send メソッドはエラーを返します。

MessageQueue クラスの Label プロパティを照会することにより、キューのラベルを取得できます。

コードでラベル名によってキューを参照するための構文は、次のようになります。

MessageQueue1.Path = "LABEL:MyQueue"
     MessageQueue1.Path = "LABEL:MyQueue";

詳細については方法 : キュー参照を設定する および方法 : キュー参照を設定する および方法 : キュー参照の設定.

参照

処理手順

方法 : キューを作成する

方法 : MessageQueue コンポーネントのインスタンスを作成する

その他の技術情報

キューの作成、削除、および管理