キュー モニカーの使用
キュー モニカーは、キューに登録されたコンポーネントをプログラムでアクティブ化するために使用されます。 キュー モニカーは、新しいモニカーから直接呼び出されるオブジェクトのクラス ID (CLSID) を受け取る必要があります。 左プレフィックスが付いている場合、新しいモニカーは CLSID をその左側のモニカーに渡します。
コンポーネント サービス管理ツール
適用されません。
Visual Basic
GetObject 表示名パラメーターは "queue:/new:" で、その後にインスタンス化するサーバー オブジェクトのプログラム ID または文字列形式の GUID (中かっこ付きまたは中かっこなし) が続きます。 次の例は、キュー モニカーを使用したコンポーネントの 3 つの有効なアクティブ化を示しています。
-
Set objMyQC = GetObject ("queue:/new:QCShip.Ship")
-
Set objMyQC = GetObject ("queue:/new:{812DF40E-BD88-11D0-8A6D-00C04FC340EE}")
-
Set objMyQC = GetObject ("queue:/new:812DF40E-BD88-11D0-8A6D-00C04FC340EE")
C/C++
CoGetObject 表示名パラメーターは "queue:/new:" で、その後にインスタンス化するサーバー オブジェクトのプログラム ID または文字列形式の GUID (中かっこ付きまたは中かっこなし) が続きます。 次の例は、キュー モニカーを使用したコンポーネントの 3 つの有効なアクティブ化を示しています。
-
hr = CoGetObject ( L"queue:/new:QCShip.Ship", NULL, IID_IShip, (void**)&pShip);
-
hr = CoGetObject ( L"queue:/new:{812DF40E-BD88-11D0-8A6D-00C04FC340EE}", NULL, IID_IShip, (void**)&pShip);
-
hr = CoGetObject ( L"queue:/new:812DF40E-BD88-11D0-8A6D-00C04FC340EE", NULL, IID_IShip, (void**)&pShip);
解説
キュー モニカーは、メッセージ キューに送信されるメッセージのプロパティを変更する省略可能なパラメーターを受け取ります。 たとえば、メッセージ キュー メッセージを優先度 6 で送信するには、キューに登録されたコンポーネントが次のようにアクティブになります。
hr = CoGetObject (
L"queue:Priority=6,ComputerName=MyComp/new:QCShip.Ship",
NULL, IID_IShip, (void**)&pShip);
次の表に、宛先キューに影響を与えるキュー モニカー パラメーターを示します。
パラメーター | 説明 |
---|---|
[ComputerName] |
メッセージ キュー キューのパス名のコンピューター名の部分を指定します。 メッセージ キュー キューのパス名は、 ComputerName<em>QueueNameとして書式設定されます。 指定しない場合は、構成済みのアプリケーションに関連付けられているコンピューター名が使用されます。 |
QueueName |
メッセージ キューキュー名を指定します。 メッセージ キュー キューのパス名は、 ComputerName<em>QueueNameとして書式設定されます。 指定しない場合は、構成済みのアプリケーションに関連付けられているキュー名が使用されます。 非トランザクション キューを取得するには、最初にキュー名を指定してから、同じ名前の COM+ アプリケーションを作成します。 |
PathName |
メッセージ キュー キューの完全なキュー パス名を指定します。 指定しない場合は、構成済みアプリケーションに関連付けられているメッセージ キュー キュー パス名が使用されます。 宛先名をオーバーライドするには、メッセージ キュー ワークグループのインストール用に次の形式でパスを指定します。 Queue:PathName=ComputerName\PRIVATE$\AppName/new:Myproject.CMyClass 注: C と Microsoft Visual C++ の両方のプログラミング言語では、文字列リテラル内で 1 つの円記号を表すために 2 つの円記号 (chicago\payroll など) が必要です。 |
FormatName |
COM+ アプリケーションをキューに登録すると、COM+ によって、アプリケーションと同じ名前のメッセージ キュー キューが作成されます。 そのキューのメッセージ キュー形式名は、COM+ アプリケーションに関連付けられた COM+ カタログにあります。 宛先名をオーバーライドするには、メッセージ キュー ワークグループのインストール用に次の形式でフォーマット名を指定します。 Queue:FormatName=DIRECT=OS:ComputerName\PRIVATE$\AppName/new:ProgId Active Directory 構成では、キュー名の一部として "PRIVATE$" が指定されていません。 |
Note
オプションのキュー モニカー パラメーターは、左から右に処理されます。 各キーワード (keyword)を 1 回だけ指定します。 PathName パラメーターを指定すると、 ComputerName パラメーターと QueueNameパラメーターの両方が置き換えられます。 特定の FormatName パラメーターは、 ComputerName、 QueueName、および PathName パラメーターに関する以前の知識を削除します。
キューに入ったコンポーネント リスナーと特定のプライベート キューの関連付け
COM+ キュー コンポーネント リスナーは、キューに登録されている COM+ アプリケーションに関連付けられているキューからのみ受信します。 COM+ アプリケーションをキューに登録すると、COM+ によって、アプリケーションと同じ名前のメッセージ キュー キューが作成されます。 そのキューのメッセージ キュー形式名は、COM+ アプリケーションに関連付けられた COM+ カタログにあります。 COM+ アプリケーションが起動され、リッスンとしてマークされると、COM+ アプリケーション プロセスのリスナーが開始され、キューが開かれます。 次の表に、メッセージ キュー メッセージに影響するキュー モニカー パラメーターを示します。
パラメーター | 説明 |
---|---|
AppSpecific |
たとえば、AppSpecific=12345 などの符号なし整数を指定します。 |
AuthLevel |
メッセージ認証レベルを指定します。 認証されたメッセージはデジタル署名され、メッセージを送信するユーザーの証明書が必要です。 許容される値:
|
配信 |
メッセージ配信オプションを指定します。 トランザクション キューの場合、この値は無視されます。 許容される値:
|
EncryptAlgorithm |
メッセージ キューでメッセージの暗号化と暗号化解除に使用する暗号化アルゴリズムを指定します。 許容される値:
|
HashAlgorithm |
暗号化ハッシュ関数を指定します。 許容される値:
|
仕分帳 |
メッセージ キュー メッセージジャーナルオプションを指定します。 許容される値:
|
ラベル |
MQ_MAX_MSG_LABEL_LEN文字までのメッセージ ラベル文字列を指定します。 |
MaxTimeToReachQueue |
メッセージがキューに到達するまでの最大時間を秒単位で指定します。 許容される値:
|
MaxTimeToReceive |
ターゲット アプリケーションがメッセージを受信する最大時間を秒単位で指定します。 許容される値:
|
優先順位 |
許可されるメッセージ キュー値内のメッセージ優先度レベルを指定します。 許容される値:
|
PrivLevel |
メッセージの暗号化に使用するプライバシー レベルを指定します。 許容される値:
|
トレース |
メッセージ キュー ルーティングのトレースで使用されるトレース オプションを指定します。 許容される値:
|
COM+ Administrative SDK 関数の完全なセットは、COM オブジェクトを使用して使用できます。 これにより、必要に応じて、すべてのプログラムで COM+ アプリケーションを開始および停止できます。
Note
COM+ アプリケーションを起動すると、アプリケーション内の個々のコンポーネントではなく、実行されているアプリケーションになります。 アプリケーションがキューに登録されていないコンポーネントを呼び出すと、そのコンポーネントを含む COM+ アプリケーションが開始されます。 リスナー チェック ボックスが有効になっている場合、リスナーはキューに登録されたコンポーネントのメッセージの処理も開始して開始します。 キューに登録されたコンポーネント サービスはこのように開始できますが、キューに登録されたコンポーネントとキューに登録されていないコンポーネントを 1 つの COM+ アプリケーションにパッケージ化する場合は、キューに登録されていないコンポーネントが実行された場合に、キューに登録されたコンポーネントを実際に開始してください。 そうでない場合は、キューに置かれたコンポーネントを、他のコンポーネントとは別の COM+ アプリケーションにパッケージ化します。