DEFINE SUB

DEFINE SUB を使用すると、管理モードで永続サブスクリプションを作成できるようになるので、既存のアプリケーションがパブリッシュ/サブスクライブ・アプリケーションに参加できるようになります。

MQSC コマンドの使用

MQSC コマンドの使用方法については、 MQSC コマンドを使用したローカル管理タスクの実行を参照してください。

IBM® i UNIX および Linux® Windows z/OS®
X X X CR

z/OS 列のシンボルの説明については、 z/OSでのコマンドの使用を参照してください。

同義語: DEF SUB

路線図の主線の上に示されている値は、 IBM MQで提供されているデフォルトですが、ご使用のシステムで変更されている可能性があります。 路線図の読み方を参照してください。

DEFINE SUB

構文図を読むビジュアル構文図をスキップ DEFINE SUB ( ストリング ) CMDSCOPE(' ')CMDSCOPE(qmgr-name)1CMDSCOPE(*)12DEST(ストリング)DESTCLAS(PROVIDED)DESTCLAS(MANAGED)DESTCORL(ストリング)DESTQMGR(ストリング)EXPIRY(UNLIMITED)EXPIRY(integer)PSPROP(MSGPROP)PSPROP(COMPATNONERFH2)PUBACCT(ストリング)PUBAPPID(ストリング)PUBPRTY(ASPUB)PUBPRTY(ASQDEFinteger)NOREPLACEREPLACEREQONLY(NO)REQONLY(YES)SELECTOR(ストリング)SUBLEVEL(1)SUBLEVEL(integer)SUBSCOPE(ALL)SUBSCOPE(QMGR)SUBUSER(ストリング) TOPICOBJ ( ストリング )3 TOPICSTR ( ストリング )3 USERDATA(ストリング)VARUSER(ANY)VARUSER(FIXED)WSCHEMA(TOPIC)WSCHEMA(CHAR)
注:
  • 1 キュー・マネージャーがキュー共有グループのメンバーである場合に、 z/OS でのみ有効です。
  • 2 z/OSでのみ有効です。
  • 3 DEFINEには、少なくとも 1 つの TOPICSTRTOPICOBJ が存在している必要があります。

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 に相当する理由コードはありません。
  • TOPICOBJTOPICSTRWSCHEMASELECTORSUBSCOPEDESTCLAS を DEFINE REPLACE で変更することはできません。
  • パブリケーションは保存されると、PubLevel 1 でリパブリッシュされるため、より高いレベルのサブスクライバーからは使用できなくなります。
  • コマンドが正常に完了しても、アクションが完了したことを意味するわけではありません。 真の完了を確認するには、 分散ネットワークの非同期コマンドが終了したことの確認DEFINE SUB ステップを参照してください。

DEFINE SUB のパラメーターの説明

(ストリング)
必須パラメーター。 このサブスクリプションの固有名を指定します。SUBNAME プロパティーを参照してください。
[z/OS]CMDSCOPE
[z/OS] このパラメーターは 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
同名の定義が既に存在すれば、この定義で置き換えます。 定義が存在しない場合は作成されます。

TOPICOBJTOPICSTRWSCHEMASELECTORSUBSCOPEDESTCLAS を DEFINE REPLACE で変更することはできません。

NOREPLACE
同名の定義が既に存在していても、この定義で置き換えません。
REQONLY
サブスクライバーが MQSUBRQ API 呼び出しを使用して更新をポーリングするか、またはすべてのパブリケーションがこのサブスクリプションに送達されるかを示します。
NO
トピックのすべてのパブリケーションが、このサブスクリプションに配信される。 これがデフォルト値です。
YES
パブリケーションは MQSUBRQ API 呼び出しへの応答としてのみ、このサブスクリプションに配信される。
このパラメーターは、サブスクライブ・オプション MQSO_PUBLICATIONS_ON_REQUEST と等価です。
SELECTOR ( ストリング )
トピックにパブリッシュされるメッセージに適用されるセレクター。
SUBLEVEL ( 整数 )
サブスクリプション階層内でこのサブスクリプションを作成するレベル。 範囲は 0 から 9 までです。
SUBSCOPE
サブスクリプションを他のキュー・マネージャーに転送することによって、サブスクライバーがそれらのキュー・マネージャーでパブリッシュされたメッセージも受信できるようにするかどうかを指定します。
ALL
パブリッシュ/サブスクライブの集合または階層で直接接続されているすべてのキュー・マネージャーにサブスクリプションを転送します。
QMGR
サブスクリプションは、このキュー・マネージャー内でトピックにパブリッシュされたメッセージのみを転送します。
注: 個々のサブスクライバーが 制限 できるのは SUBSCOPEのみです。 このパラメーターがトピック・レベルで ALL に設定された場合、個々のサブスクライバーはこのサブスクリプションについて QMGR に制限できます。 一方、このパラメーターがトピック・レベルで QMGR に設定された場合、個々のサブスクライバーを ALL に設定しても効果はありません。
SUBNAME
ハンドルに関連付けられているアプリケーションの固有サブスクリプション名。 このパラメーターは、トピックに対するサブスクリプションのハンドルにのみ関連しています。 その他のハンドルに対しては返されません。 サブスクリプションには、名前が付かないものもあります。
SUBUSER ( ストリング )
このサブスクリプションに関連する宛先キューにパブリケーションを書き込むことができるかどうかを確認するために実行するセキュリティー検査で使用するユーザー ID を指定します。 この ID は、サブスクリプションの作成者に関連付けられているユーザー ID であるか、またはサブスクリプションの引き継ぎが許可されている場合は、サブスクリプションを直近に引き継いだユーザー ID です。 このパラメーターの長さは 12 文字以下でなければなりません。
TOPICOBJ ( ストリング )
このサブスクリプションによって使用されるトピック・オブジェクトの名前です。
TOPICSTR ( ストリング )
完全修飾されたトピック名を指定するか、またはサブスクリプションにワイルドカード文字を使用してトピックのセットを指定します。
USERDATA ( ストリング )
サブスクリプションに関連するユーザー・データを指定します。 ストリングは、MQSUB API 呼び出しでアプリケーションによって取得できる可変長の値で、このサブスクリプションへメッセージ・プロパティーとして送信されるメッセージ内で渡されます。
[V8.0.0.7 2017 年 7 月] IBM MQ 8.0.0フィックスパック 7 以降では、 IBM MQ classes for JMS アプリケーションは、メソッド javax.jms.Message.getStringProperty(java.lang.String)との JmsConstants インターフェースで定数 JMS_IBM_SUBSCRIPTION_USER_DATA を使用して、メッセージからサブスクリプション・ユーザー・データを取得できます。 詳しくは、 Retrieval of user subscription dataを参照してください。
VARUSER
サブスクリプション作成者以外のユーザーがそのサブスクリプションへ接続し、その所有権を引き継ぐことができるかどうかを指定します。
ANY
どのユーザーでも、サブスクリプションに接続してその所有権を引き継ぐことができます。
FIXED
別の USERID による引き継ぎは許可されていません。
WSCHEMA
トピック・ストリング内のワイルドカード文字の解釈に使用されるスキーマ。
CHAR
ワイルドカード文字はストリングの一部を表します。
トピック
ワイルドカード文字はトピック階層の部分を表します。