DEFINE SUB
DEFINE SUB を使用すると、管理モードで永続サブスクリプションを作成できるようになるので、既存のアプリケーションがパブリッシュ/サブスクライブ・アプリケーションに参加できるようになります。
MQSC コマンドの使用
MQSC コマンドの使用方法については、 MQSC コマンドを使用したローカル管理タスクの実行を参照してください。
IBM® i | UNIX および Linux® | Windows | z/OS® |
---|---|---|---|
![]() |
![]() |
![]() |
CR |
z/OS 列のシンボルの説明については、 z/OSでのコマンドの使用を参照してください。
同義語: DEF SUB
路線図の主線の上に示されている値は、 IBM MQで提供されているデフォルトですが、ご使用のシステムで変更されている可能性があります。 路線図の読み方を参照してください。
DEFINE SUB の使用上の注意
- サブスクリプションを定義するときには、以下の情報を指定する必要があります。
- SUBNAME
- メッセージの宛先
- サブスクリプションの対象のトピック
- トピック名は、以下の方法で指定できます。
- TOPICSTR
- TOPICSTR 属性でトピックを完全に指定します。
- TOPICOBJ
- トピックは、指定されたトピック・オブジェクトの TOPICSTR 属性から取得されます。 指定されたトピック・オブジェクトは、新規サブスクリプションの TOPICOBJ 属性として保存されます。 この方式が用意されているのは、オブジェクト定義で長いトピック・ストリングを入力できるようにするためです。
- TOPICSTR と TOPICOBJ
- 名前付きのトピック・オブジェクトの TOPICSTR 属性と TOPICSTR の値との連結によってトピックを取得します (連結の規則については、MQSUB API の仕様を参照してください)。 指定されたトピック・オブジェクトは、新規サブスクリプションの TOPICOBJ 属性として保存されます。
- TOPICOBJを指定する場合は、パラメーターに IBM MQ トピック・オブジェクトの名前を指定する必要があります。 指定されたトピック・オブジェクトの存在は、コマンドの処理時に検査されます。
- DEST キーワードと DESTQMGR キーワードを使用して、メッセージの宛先を明示的に指定できます。
デフォルト・オプションの DESTCLAS(PROVIDED) の場合は、DEST キーワードを指定する必要があります。DESTCLAS(MANAGED) を指定した場合は、ローカル・キュー・マネージャーで管理対象の宛先が作成されるので、DEST 属性や DESTQMGR 属性を指定できません。
- z/OS の場合のみ、DEF SUB コマンドの処理時に、指定された DEST または DESTQMGR が存在するかどうかの検査は実行されません。
これらの名前は、パブリッシュ時に MQOPEN 呼び出しの
ObjectName
およびObjectQMgrName
として使用されます。 これらの名前は、 IBM MQ 名前解決規則に従って解決されます。 - MQSC コマンドまたは PCF コマンドを使用して管理目的でサブスクリプションを定義するときには、セレクターの構文が無効かどうかの検証は行われません。 DEFINE SUB コマンドには、MQSUB API 呼び出しから返される MQRC_SELECTION_NOT_AVAILABLE に相当する理由コードはありません。
- TOPICOBJ、TOPICSTR、WSCHEMA、SELECTOR、SUBSCOPE、DESTCLAS を DEFINE REPLACE で変更することはできません。
- パブリケーションは保存されると、PubLevel 1 でリパブリッシュされるため、より高いレベルのサブスクライバーからは使用できなくなります。
- コマンドが正常に完了しても、アクションが完了したことを意味するわけではありません。 真の完了を確認するには、 分散ネットワークの非同期コマンドが終了したことの確認の DEFINE SUB ステップを参照してください。
DEFINE SUB のパラメーターの説明
- (ストリング)
- 必須パラメーター。 このサブスクリプションの固有名を指定します。SUBNAME プロパティーを参照してください。
CMDSCOPE
このパラメーターは z/OS にのみ適用され、キュー・マネージャーがキュー共有グループのメンバーである場合のコマンドの処理方法を指定します。
- ' '
- コマンドは、そのコマンドが入力されたキュー・マネージャーで処理されます。 これがデフォルト値です。
- qmgr-name
- コマンドは、指定されたキュー・マネージャーがキュー共有グループ内でアクティブな場合に、その指定されたキュー・マネージャーで処理されます。
キュー共有グループ環境を使用しており、コマンド・サーバーが使用可能である場合のみ、コマンドを入力したキュー・マネージャーとは別のキュー・マネージャー名を指定できます。
- *
- コマンドは、ローカル・キュー・マネージャーで処理され、キュー共有グループ内のすべてのアクティブなキュー・マネージャーにも渡されます。 この値を設定すると、キュー共有グループ内のすべてのキュー・マネージャーでコマンドを入力した場合と同様の結果が得られます。
CMDSCOPE はフィルター・キーワードとして使用できません。
- DEST ( ストリング )
- このサブスクリプションに対してパブリッシュされるメッセージの宛先。このパラメーターは、キューの名前です。
- DESTCLAS
- システム管理の宛先。
- PROVIDED
- 宛先はキュー。
- MANAGED
- 宛先は管理対象。
- DESTCORL ( ストリング )
- このサブスクリプションにパブリッシュされるメッセージに使用される
CorrelId
です。ブランクの値 (デフォルト) を指定すると、システムが生成した相関 ID が使用されます。
「
000000000000000000000000000000000000000000000000
」(48 個のゼロ) に設定すると、メッセージがパブリッシュ/サブスクライブ階層間で伝搬されない限り、パブリッシュ・アプリケーションによって設定された CorrelId は、サブスクリプションに配信されるメッセージのコピーに保持されます。注: JMSを使用してプログラマチックに DESTCORL プロパティーを設定することはできません。 - DESTQMGR ( ストリング )
- このサブスクリプションに対してパブリッシュされたメッセージの宛先キュー・マネージャー。 リモート・キュー・マネージャー (例えば、XMITQ) に対するチャネルと、送信側チャネルを定義する必要があります。 定義しない場合、メッセージは宛先に到達しません。
- EXPIRY
- サブスクリプション・オブジェクトの作成日時から期限切れまでの時間。
- ( 整数 )
- 作成日時から期限切れまでの時間 (10 分の 1 秒単位)。
- UNLIMITED
- 有効期限時刻はありません。 これは製品が提供するデフォルト・オプションです。
- LIKE ( サブスクリプション名 )
この定義のモデルとして使用するパラメーターが設定されているサブスクリプションの名前。
このパラメーターは、DEFINE SUB コマンドのみに適用されます。
このフィールドを指定しないで、コマンドに関連するパラメーター・フィールドも入力しない場合は、このキュー・マネージャーのサブスクリプションのデフォルト定義から値が取り込まれます。 このパラメーターを入力しない場合、次のように指定したことに相当します。LIKE (SYSTEM.DEFAULT.SUB)
- PSPROP
- このサブスクリプションに送信されるメッセージにパブリッシュ/サブスクライブ関連メッセージ・プロパティーを追加する方法。
- NONE
- パブリッシュ/サブスクライブ・プロパティーをメッセージに追加しません。
- COMPAT
- パブリッシュ/サブスクライブ・プロパティーを MQRFH バージョン 1 のヘッダー内に追加します (メッセージが PCF 形式でパブリッシュされる場合は例外です)。
- MSGPROP
- パブリッシュ・サブスクライブ・プロパティーはメッセージ・プロパティーとして追加されます。
- RFH2
- パブリッシュ・サブスクライブ・プロパティーは、MQRFH バージョン 2 ヘッダー内に追加されます。
- PUBACCT ( ストリング )
- このサブスクリプションにパブリッシュされるメッセージへの伝搬のために、MQMD の
AccountingToken
フィールドにサブスクライバーによって渡されるアカウンティング・トークン。 - PUBAPPID ( ストリング )
- このサブスクリプションにパブリッシュされるメッセージへの伝搬のために、MQMD の
ApplIdentityData
フィールドにサブスクライバーによって渡される ID データ。 - PUBPRTY
- このサブスクリプションに送信されたメッセージの優先度。
- ASPUB
- このサブスクリプションに送信されるメッセージの優先度は、パブリッシュされるメッセージで指定されている優先度から取り込まれます。
- ASQDEF
- このサブスクリプションに送信されるメッセージの優先度は、宛先として定義されているキューのデフォルト優先度から取り込まれます。
- (整数)
- このサブスクリプションにパブリッシュされるメッセージの明示的な優先度を整数値として指定します。
- REPLACE および NOREPLACE
- このパラメーターでは、既存の定義をこの定義に置き換えるかどうかを制御します。
- REPLACE
- 同名の定義が既に存在すれば、この定義で置き換えます。 定義が存在しない場合は作成されます。
TOPICOBJ、TOPICSTR、WSCHEMA、SELECTOR、SUBSCOPE、DESTCLAS を DEFINE REPLACE で変更することはできません。
- NOREPLACE
- 同名の定義が既に存在していても、この定義で置き換えません。
- REQONLY
- サブスクライバーが MQSUBRQ API 呼び出しを使用して更新をポーリングするか、またはすべてのパブリケーションがこのサブスクリプションに送達されるかを示します。
- NO
- トピックのすべてのパブリケーションが、このサブスクリプションに配信される。 これがデフォルト値です。
- YES
- パブリケーションは MQSUBRQ API 呼び出しへの応答としてのみ、このサブスクリプションに配信される。
- SELECTOR ( ストリング )
- トピックにパブリッシュされるメッセージに適用されるセレクター。
- SUBLEVEL ( 整数 )
- サブスクリプション階層内でこのサブスクリプションを作成するレベル。 範囲は 0 から 9 までです。
- SUBSCOPE
- サブスクリプションを他のキュー・マネージャーに転送することによって、サブスクライバーがそれらのキュー・マネージャーでパブリッシュされたメッセージも受信できるようにするかどうかを指定します。
- ALL
- パブリッシュ/サブスクライブの集合または階層で直接接続されているすべてのキュー・マネージャーにサブスクリプションを転送します。
- QMGR
- サブスクリプションは、このキュー・マネージャー内でトピックにパブリッシュされたメッセージのみを転送します。
注: 個々のサブスクライバーが 制限 できるのは SUBSCOPEのみです。 このパラメーターがトピック・レベルで ALL に設定された場合、個々のサブスクライバーはこのサブスクリプションについて QMGR に制限できます。 一方、このパラメーターがトピック・レベルで QMGR に設定された場合、個々のサブスクライバーを ALL に設定しても効果はありません。 - SUBNAME
- ハンドルに関連付けられているアプリケーションの固有サブスクリプション名。 このパラメーターは、トピックに対するサブスクリプションのハンドルにのみ関連しています。 その他のハンドルに対しては返されません。 サブスクリプションには、名前が付かないものもあります。
- SUBUSER ( ストリング )
- このサブスクリプションに関連する宛先キューにパブリケーションを書き込むことができるかどうかを確認するために実行するセキュリティー検査で使用するユーザー ID を指定します。 この ID は、サブスクリプションの作成者に関連付けられているユーザー ID であるか、またはサブスクリプションの引き継ぎが許可されている場合は、サブスクリプションを直近に引き継いだユーザー ID です。 このパラメーターの長さは 12 文字以下でなければなりません。
- TOPICOBJ ( ストリング )
- このサブスクリプションによって使用されるトピック・オブジェクトの名前です。
- TOPICSTR ( ストリング )
- 完全修飾されたトピック名を指定するか、またはサブスクリプションにワイルドカード文字を使用してトピックのセットを指定します。
- USERDATA ( ストリング )
- サブスクリプションに関連するユーザー・データを指定します。 ストリングは、MQSUB API 呼び出しでアプリケーションによって取得できる可変長の値で、このサブスクリプションへメッセージ・プロパティーとして送信されるメッセージ内で渡されます。
- VARUSER
- サブスクリプション作成者以外のユーザーがそのサブスクリプションへ接続し、その所有権を引き継ぐことができるかどうかを指定します。
- ANY
- どのユーザーでも、サブスクリプションに接続してその所有権を引き継ぐことができます。
- FIXED
- 別の USERID による引き継ぎは許可されていません。
- WSCHEMA
- トピック・ストリング内のワイルドカード文字の解釈に使用されるスキーマ。
- CHAR
- ワイルドカード文字はストリングの一部を表します。
- トピック
- ワイルドカード文字はトピック階層の部分を表します。