プログラミング・ガイド
Oracle Tuxedo Message Queue PAMSプログラミング・ガイド
この章には次のトピックが含まれます:
PAMSアプリケーション・プログラミング・インタフェース
Oracle MessageQ APIの説明の形式
Oracle MessageQ APIのデータ型
Oracle MessageQアプリケーション・プログラミング・インタフェース(API)はポータブルであるため、APIはすべてのサポート対象プラットフォーム向けに1つに文書化されています。この章では、すべてのOracle MessageQ呼出し可能サービスを、標準の説明書式を使用してアルファベット順に説明します。
注意: |
pams で開始するAPIのかわりにtp で開始するAPIを使用することを強くお薦めします。 |
注意: |
Oracle Tuxedo Message QueueはPAMS APIをサポートし、Oracle Messageq (OMQ)との互換性を実現しています。OMQアプリケーションをOTMQに移行するには、「OMQからOTMQ 12cへの移行」を参照してください。 |
Oracle MessageQ APIの説明の形式
各説明の先頭には、エントリ・ポイント名および実行される機能に関する簡単な説明が含まれています。表2-1に、各呼出し可能サービスの説明の項を示します。
表2-1 呼出し可能サービスの説明の形式
|
|
|
エントリ・ポイント名および引数リストによる、呼出し可能サービスを使用するための構文。大カッコ([ ])は、サービスのオプション引数を示します。呼出し可能を使用するための構文
|
|
各引数に対するデータ型、受渡しメカニズム、C言語プロトタイプおよびアクセス。
|
|
|
|
|
|
戻りコードおよびこれらがサポートされるプラットフォーム。
|
|
関連する呼出し可能サービスのリスト。これらのサービスの詳細は、この 「Oracle MessageQ APIのデータ型」の項を参照してください。
|
|
呼出し可能サービスの使用方法を示すサンプル・プログラム。これらのサンプル・プログラムは、Oracle MessageQメディア・キットのexamplesディレクトリにあります。
|
Oracle MessageQ APIのデータ型
Oracle MessageQ API引数では、Cプログラミング言語によって定義されたデータ型と、Oracle MessageQソフトウェアによって定義されたいくつかのデータ型を使用します。short、-unsigned shortおよびcharは、Cプログラミング言語により定義されているデータ型です。q_addressなどのOracle MessageQデータ型、およびPSB構造体とshow_buffer構造体は、p_entry.hインクルード・ファイル内で定義されています。
Oracle MessageQでは、符号付きおよび-符号なしロングワードのデータ型定義がサポートされます。Oracle MessageQにより定義されたint32データ型は、32ビット符号付き整数です。整数データ型のlongのかわりにint32データ型を使用し、そのサイズはオペレーティング・システムにより異なります。int32データ型定義は、すべてのプラットフォームにわたる一貫した定義を保証し、Compact Alpha AXPシステムなどの次世代の64ビット・アーキテクチャに対応するように追加されています。uint32データ型は32ビット符号なし整数を指定し、unsigned longの使用と置き換わります。
注意: |
int32およびuint32データ型定義は、Oracle MessageQバージョン2.0プラットフォームでは使用できません。Oracle MessageQバージョン2.0ソフトウェアでは、Cプログラム言語で定義された標準の符号付きロングワードおよび符号なしロングワードのデータ型が使用されます。 |
pams_attach_q
アプリケーション・プログラムをメッセージ・キューにアタッチすることにより、Oracle MessageQのメッセージ・キューイング・バスに接続します。アプリケーションがメッセージを送受信するには、この関数を正常に実行する必要があります。アプリケーションは、この関数を使用してキューにアタッチすると、キューのオーナーとなります。1つのアプリケーション・プログラムのみが、プライマリ・キューにアタッチしてメッセージを読み取ることができます。セカンダリ・キューのアタッチメントが定義された永続プライマリ・キューにアプリケーションがアタッチすると、セカンダリ・キューもこの関数によってアタッチされます。
構文
引数
引数の定義
attach_mode
アプリケーションをメッセージ・キューにアタッチするためのモードを指定します。この引数には次の3つの事前定義済の定数があります。
- PSYM_ATTACH_BY_NAME-名前によるアタッチ
- PSYM_ATTACH_BY_NUMBER-番号によるアタッチ
- PSYM_ATTACH_TEMPORARY-一時キューとしてアタッチ
attach_modeがPSYM_ATTACH_BY_NAMEである場合、アプリケーションは指定されたキュー名またはエイリアス名により特定されるキューにアタッチします。Oracle MessageQは、指定された
q_nameに対して暗黙的にpams_locate_q呼出しを実行することで、キューを特定します。Oracle MessageQが使用する手順は、
name_space_list引数によって決定されます。
q_attached
アプリケーションが正常にメッセージ・キューにアタッチすると、Oracle MessageQからキュー・アドレスを受け取ります。
q_type
アタッチメントのキュー・タイプを指定します。この引数には次の2個の事前定義済の定数があります。
- PSYM_ATTACH_PQ-プライマリ・キュー(デフォルト)
- PSYM_ATTACH_SQ-セカンダリ・キュー
q_name
attach_mode引数でキュー名またはキューの番号によるアタッチメントが指定された場合に、アプリケーションにアタッチする永続キューの名前を指定します。キュー名は、途中に空白を含まない英数字の文字列で、特殊文字としてアンダースコア(_)、ハイフン(-)およびドル記号($)も使用できます。
キュー名への参照は、大文字/小文字が区別され、グループ初期化ファイルに入力されているキュー名と一致する必要があります。キュー名の例としては、QUEUE_1、high-priority、My$Queueなどがあります。
q_name引数は、
attach_mode引数と次の依存関係があります。
- attach_mode引数がPSYM_ATTACH_BY_NAMEである場合、q_name引数にはOracle MessageQのグループ構成時に指定された有効なキュー名が含まれている必要があります。
- attach_mode引数がPSYM_ATTACH_BY_NUMBERである場合、q_name引数はキュー番号を表す1文字から3文字の数字のASCII文字列として指定します。
- attach_mode引数がPSYM_ATTACH_TEMPORARYである場合、q_name引数は使用されず、値0を渡すことによって指定する必要があります。
q_name_len
q_name引数の文字数を指定します。UNIX、Windows NTでは、文字列の最大の長さは127文字です。
name_space_list
attach_mode引数PSYM_ATTACH_BY_NAMEが指定された場合に検索対象となるネーム表のリストを指定します。
name_space_listを指定する場合は、
name_space_list_len引数も指定する必要があります。この引数を指定しない場合は、PSEL_TBL_GRPがデフォルトとなります。
name_space_list引数に指定できる値は次のとおりです。
name_space_list引数は、次のように名前の範囲を識別します。
- ローカルのキュー参照またはキューを識別するには、アプリケーションではname_space_listにPSEL_TBL_GRPが含まれている必要があります。(PSEL_TBL_BUSはグローバル・キュー参照を識別するため、リスト内でこれを指定しないでください。)
- グローバル・キュー参照を識別するには、name_space_list引数にPSEL_TBL_BUS (またはPSEL_TBL_BUS_MEDIUMまたはPSEL_TBL_BUS_LOW)を含め、そのパス名を明示的または暗黙的に指定する必要があります。q_name引数にスラッシュ(/)またはピリオド(.)が1つでも含まれている場合、Oracle MessageQはこれをパス名として扱います。それ以外の場合、Oracle MessageQはq_nameを名前として扱い、名前にDEFAULT_NAMESPACE_PATHを追加して、ルックアップするパス名を作成します。(DEFAULT_NAMESPACE_PATHは、グループ初期化ファイルの%PROFILEセクションで設定されています。)
name_space_list引数は、次のようにキャッシュ・アクセスも制御します。
- グループ・キャッシュを検索する前に、ローカル・キュー参照またはキュー名のルックアップを実行してプロセス・キャッシュをチェックするには、name_space_list引数にPSEL_TBL_GRPおよびPSEL_TBL_PROCを指定します。
- グローバル・ネームスペースを検索する前に、グローバル・キュー参照のルックアップを実行してプロセス・キャッシュをチェックし、その後でグループ・キャッシュをチェックするには、PSEL_TBL_BUS (またはPSEL_TBL_BUS_LOWまたはPSEL_TBL_BUS_MEDIUM)、PSEL_TBL_GRPおよびPSEL_TBL_PROCを指定します。
- マスター・データベース内を検索する前にグローバル・ネームスペース内のすべてのキャッシュをルックアップするには、PSEL_TBL_BUS_LOWを指定し、
- PSEL_TBL_BUSは指定しません。
- マスター・データベースを検索する前に、速度は遅くても最新のグローバル・ネームスペース内のキャッシュをルックアップするときにのみ、PSEL_TBL_BUSのかわりにPSEL_TBL_BUS_MEDIUMを指定します。
キュー・アドレスの動的バインディングの詳細は、「ネーミングの使用」のトピックを参照してください。
name_space_list_len
name_space_list引数のエントリの数を指定します。
name_space_list_len引数がゼロの場合、デフォルトとして、Oracle MessageQは
name_space_list引数でPSEL_TBL_GRPを使用します。
timeout
アタッチの完了に許容するPAMSの時間単位数(1/10秒間隔)です。ゼロが指定された場合、グループのATTACH_TMOプロパティが使用されます。ATTACH_TMOプロパティもゼロである場合は、600が使用されます。
nullarg_2
プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。
nullarg_3
プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。
説明
アプリケーションがpams_attach_q関数を使用するには、Oracle MessageQメッセージ・キューイング・バスが構成されている必要があります。Oracle MessageQメッセージ・キューイング・バスは、1つ以上のOracle MessageQメッセージ・キューイング・グループのコレクションです。メッセージ・キューイング・グループは、1つのシステム上に配置され、グローバル・メモリー・セクションとファイルを共有するメッセージ・キューのコレクションで、同じサーバー・プロセスによって処理されます。Oracle MessageQのメッセージ・キューは、メッセージが格納および取得されるメモリーまたはディスクの領域です。Oracle MessageQ環境の構成方法については、使用するプラットフォーム用のインストレーションおよび構成ガイドを参照してください。
Oracle MessageQメッセージを受信するには、アプリケーションが少なくとも1つのメッセージ・キューにアタッチする必要があります。アプリケーションは、pams_attach_q関数により、次の手順でアタッチできます。
- 番号を指定してキューにアタッチできます。番号でアタッチするには、グループ定義でメッセージ・キューが構成されている必要があります。番号によるアタッチにより、特定のキューにアタッチし、キューにメッセージを送信し、そのキューに送信されたメッセージを取得できます。
- キューの名前を指定してキューにアタッチできます。名前でアタッチするには、グループ定義でメッセージ・キューが構成されている必要があります。名前によるアタッチにより、特定のキューにアタッチし、キューにメッセージを送信し、そのキューに送信されたメッセージを取得できます。さらに、名前によるアタッチでは、キューのアドレスが変更になってもコードの変更や再コンパイルが不要です。このため、名前によるアタッチは、Oracle MessageQの環境構成の変更からアプリケーションを保護します。
- 一時キューにアタッチできます。一時キューにアタッチするために、アプリケーションで特定のキュー名や名前を指定する必要はありません。Oracle MessageQによってキューが割り当てられ、割り当てられたキューの番号が戻されます。一時キューにより、アプリケーションでは、グループ構成の詳細を知らなくてもメッセージングを実行できます。
アプリケーションでは、プライマリまたはセカンダリのアタッチメントを指定できます。すべてのアプリケーションにはプライマリ・キューがあります。それに加え、1つ以上のセカンダリ・キューにアタッチできます。プライマリ・キューは、グループ定義でセカンダリ・キューの所有者として構成できます。セカンダリ・キューの所有者であるプライマリ・キューにアタッチすると、プライマリ・キューにアタッチされるのと同時に、そのアプリケーションは自動的にセカンダリ・キューにもアタッチされます。
それに加え、マルチリーダー・キューにアタッチできます。マルチリーダー・キューは、複数のアプリケーションによる読取りが可能で、グループ定義の一部として構成されます。
戻り値
表2-4 戻りコード
|
|
|
|
|
この関数に渡された呼出し引数の数が正しくありません。
|
|
|
キューは、すでにこのアプリケーションにアタッチされています。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
そのキュー番号はすでに別のアプリケーションまたはプロセスにアタッチされています。
|
|
|
|
|
|
ネットワーク・エラーにより通信リンクが中断しました。
|
|
|
リソースにアクセスできません。指定された名前のアドレスが0であるか、別のグループに存在します。
|
|
|
|
|
|
このようなキュー名はありません。グローバル・キュー参照の場合、このエラーはグループ構成ファイル内の不正なデフォルト・パス名が原因である可能性があります。
|
|
|
アタッチする受信メッセージ割当てまたはバイト割当てが不十分です。
|
|
|
|
|
|
マルチリーダー・キューにアタッチしようとしていますがキュー・タイプがMRQではありません。
|
|
|
キューの名前または番号がプライマリ・キューではありません。
|
|
|
キューの名前または番号がセカンダリ・キューではありません。
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
ターゲット・キューの名前または番号が存在しません。
|
|
|
|
|
|
|
|
|
|
|
|
アタッチする受信メッセージ割当てまたはバイト割当てが不十分です。
|
|
|
|
|
|
マルチリーダー・キューにアタッチしようとしていますがキュー・タイプがMRQではありません。
|
|
|
キューの名前または番号がプライマリ・キューではありません。
|
|
|
キューの名前または番号がセカンダリ・キューではありません。
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
ターゲット・キューの名前または番号が存在しません。
|
|
|
|
|
|
|
|
|
|
関連項目
-
pams_detach_q
-
pams_exit
-
pams_locate_q
例
名前によるアタッチ
この例は、名前によってキューにアタッチする方法を示しています。名前「example_q_1」が、グループ構成情報でプライマリ・キューとして、またはローカルのキュー・エイリアスまたはプライマリ・キューとして定義されている必要があります。完全なコードの例x_attnam.cは、examplesディレクトリ内にあります。
番号によるアタッチ
この例は、番号によってキューにアタッチする方法を示しています。番号1のキューが、グループ構成情報でプライマリ・キューとして定義されている必要があります。完全なコードの例x_attnum.cは、examplesディレクトリ内にあります。
一時としてアタッチ
この例は、一時キューとしてアタッチする方法を示しています。完全なコードの例x_atttmp.cは、examplesディレクトリ内にあります。
pams_bind_q
実行時に、キュー・アドレスをキューの参照に動的に関連付けます。これにより、サーバー・アプリケーションで実行時に動的にキューのエイリアスをサービスに登録できます。これによりエンド・ユーザーは、通常のホスト・コンピュータが停止しても、サービスが別のホスト・コンピュータで提供されていることを意識せずにサービスにアクセスできます。
構文
引数
引数の定義
q_addr
この引数で指定される値は、キュー名をバインドするか、アンバインドするかを制御します。
- キューのアドレスが指定されている場合、この関数はそれをq_aliasにバインドします。
- 0が指定された場合、この関数はq_aliasをそのキュー・アドレスからアンバインドします。呼出し元アプリケーションは、q_aliasが再びゼロに設定されるまでそれにバインドされています。
q_alias
グローバル・キュー参照またはローカル・キュー参照を識別します。Oracle MessageQがこのエイリアスを見つけるために使用する手順は、次に説明する
name_space_list引数によって制御されます。
q_alias_len
name_space_list
指定した場合、PSEL_TBL_BUSまたはPSEL_TBL_GRPが含まれる1エントリ・リストが識別されます。
ローカル・キュー参照を識別するには、アプリケーションがネームスペース・リストPSEL_TBL_GRPを持ち、その名前を
q_alias引数に渡す必要があります。グローバル・キュー参照を識別するには、アプリケーションはネームスペース・リストPSEL_TBL_BUSを持ち、そのパス名を明示的または暗黙的に指定する必要があります。
- q_alias引数にスラッシュ(/)またはピリオド(.)が1つでも含まれている場合、Oracle MessageQはq_aliasをパス名として扱います。
- それ以外の場合、Oracle MessageQはq_aliasを名前として扱い、名前にDEFAULT_NAMESPACE_PATHを追加して、ルックアップするパス名を作成します。(DEFAULT_NAMESPACE_PATHは、初期化ファイルの%PROFILEセクションで設定されています。)
キュー・アドレスの動的バインディングの詳細は、「ネーミングの使用」のトピックを参照してください。
name_space_list_len
name_space_list引数のエントリの数を指定します。エントリの数は0または1のいずれかです。エントリの数が0の場合(
name_space_listが省略されていることを示す)、PSEL_TBL_GRPが想定されます。
timeout
バインドの完了に許容するPAMSの時間単位数(1/10秒間隔)を指定します。0が指定された場合、グループのATTACH_TMOプロパティが使用されます。ATTACH_TMOプロパティも0である場合は、600が使用されます。
nullarg_1
プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。
説明
アプリケーションがpams_bind_qを呼び出すには、それが指定されたキュー・アドレスにアタッチされている必要があります。リスト2-1は、バインド呼出し前のアタッチを示し、このように2つの関数をともに使用することが一般的です。
戻り値
表2-6 戻りコード
|
|
|
|
|
|
|
|
|
|
|
|
|
|
q_addrの0以外の値が渡され、指定された q_aliasがすでにキュー・アドレスに割り当てられている場合に戻されます。
|
|
|
|
|
|
|
|
|
リソースにアクセスできません。指定された名前のアドレスが0であるか、別のグループに存在します。
|
|
|
グローバル参照の場合、このエラーはグループ構成ファイル内の不正なデフォルト・パス名が原因である可能性があります。
|
|
|
|
|
|
Oracle MessageQにアタッチされていません。
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
指定されたタイムアウト期間を超過しました。この状況では、Oracle MessageQは指定されたキュー・エイリアスを内部的にアンバインドします。同じ名前への後続のPAMS_bind_q呼出しは、内部アンバインドが成功するまで PAMS__UNBINDING エラーを戻します。
|
|
|
リソースにアクセスできません。指定された名前のアドレスが0であるか、別のグループに存在します。
|
|
|
グローバル参照の場合、このエラーはグループ構成ファイル内の不正なデフォルト・パス名が原因である可能性があります。
|
|
|
|
|
|
Oracle MessageQにアタッチされていません。
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
指定されたタイムアウト期間を超過しました。この状況では、Oracle MessageQは指定されたキュー・エイリアスを内部的にアンバインドします。同じ名前への後続のPAMS_bind_q呼出しは、内部アンバインドが成功するまで PAMS__UNBINDING エラーを戻します。
|
|
|
Oracle MessageQが処理中であるか、古いバインドをアンバインド中であったため、バインドを実行できません。
|
関連項目
-
pams_attach_q
-
pams_locate_q
例
pams_bind_q の例は、実行時にキュー参照をキュー・アドレスにバインドする方法を示しています。完全なコードの例x_bind.cは、examplesディレクトリ内にあります。
pams_cancel_get
sel_filter引数で指定された値に一致するすべての保留中pams_get_msgaリクエストを取り消します。保留中のpams_get_msgaリクエストが取り消されるとき、PAMSステータス・ブロック(PSB)の配信ステータスがpams_CANCELに設定され、指定したアクションのルーチンがキューイングされます。pams_cancel_get関数とpams_get_msga関数のリクエストの間で適切に同期できるように、pams_cancel_get関数は完了するまで待機します。未処理のpams_get_msga関数のリクエストはすべて、pams_exit関数またはイメージの終了により取り消されます。
構文
引数
引数の定義
sel_filter
基準を指定し、この基準によりアプリケーションで未処理のpams_get_msgaリクエストを選択的に取り消すことができます。
sel_filter引数の詳細は、pams_get_msg関数の項を参照してください。複合的な選択フィルタの作成方法については、pams_set_select関数を参照してください。
戻り値
表2-8 戻りコード
|
|
|
|
|
|
|
|
|
|
|
プロセスは、その非同期システム・トラップ(AST)割当てを超過しました。
|
関連項目
-
pams_cancel_select
-
pams_get_msga
-
pams_set_select
pams_cancel_select
以前に生成された選択マスクに関連付けられている選択配列およびインデックス・ハンドルを解放します。index_handleおよび関連付けられた選択マスクはpams_set_select関数を使用して作成されます。OpenVMS環境で選択マスクが非同期読取りリクエストで使用されるとき、この関数はまた、参照されたindex_handleを使用している保留中のpams_get_msgaリクエストを取り消します。
構文
引数
引数の定義
index_handle
取り消す選択マスクのインデックス・ハンドルを指定します。
index_handleは、pams_set_select関数によって戻されます。
戻り値
表2-10 戻りコード
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ネットワーク・エラーにより通信リンクが中断しました。
|
|
|
プロセスは、Oracle MessageQにアタッチされていません。
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
|
関連項目
-
pams_get_msga
-
pams_set_select
pams_cancel_timer
この関数に渡されるtimer_id引数により定義されるOracle MessageQタイマーを削除します。メッセージ・キュー内で待機している、選択された識別コードを持つ期限切れのすべてのタイマーが削除され、配信されません。
構文
int32 pams_cancel_timer (timer_id)
引数
引数の定義
timer_id
取り消すタイマーのタイマーIDを指定します。timer_idは、pams_set_timer関数によって戻されます。
戻り値
表2-12 戻りコード
|
|
|
|
|
|
|
|
timer_id引数は、nullとして指定されました。
|
|
|
アプリケーションに timer_idの無効な値が提供されました。
|
|
|
ネットワーク・エラーにより通信リンクが中断しました。
|
|
|
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
|
|
|
|
関連項目
pams_close_jrn
jrn_handle引数に関連付けられているMRSジャーナル・ファイルを閉じます。使用不能のレター・ジャーナル(DLJ)と事後確認ジャーナル(PCJ)の2つのタイプのジャーナル・ファイルがあります。Oracle MessageQメッセージ・リカバリ・システムの使用方法の詳細は、「リカバリ可能メッセージングの使用」を参照してください。
構文
引数
引数の定義
Jrn_handle
閉じる対象のメッセージ・リカバリ・ジャーナル・ファイルのジャーナル・ハンドルを指定します。
jrn_handleは、pams_open_jrn関数によって戻されます。
戻り値
表2-14 戻りコード
|
|
|
|
|
|
|
|
アプリケーションが無効なジャーナル・ハンドルを提供しました。
|
|
|
|
関連項目
-
pams_confirm_msg
-
pams_open_jrn
-
pams_read_jrn
pams_confirm_msg
明示的な確認を必要とするメッセージの受信を確認します。これは、明示的な確認用に構成されているキューに送信されたリカバリ可能メッセージか、または明示的な受信確認が必要なACK配信モードを使用して送信されたメッセージの場合です。アプリケーションでは、受信した各メッセージのPSBのステータス・フィールドを調べ、そのメッセージが明示的な確認を必要としているかどうかを判断する必要があります。
リカバリ可能メッセージを受信した場合、アプリケーションでは、メッセージ・リカバリ・ジャーナルのディスク記憶域からそれを削除するため、pams_confirm_msg関数を呼び出す必要があります。リカバリ可能メッセージの受信が確認されない場合、そのメッセージはリカバリ・システムによって保持されたままになり、アプリケーションでそのキューからデタッチし、再びアタッチしたときに再配信されます。
Oracle MessageQでは、リカバリ・ジャーナル内の次に続くメッセージが配信されるときに、リカバリ可能メッセージの受信を自動的に確認できます。この機能は、暗黙的な確認と呼ばれます。
すべてのキューは、暗黙的な確認または明示的な確認のどちらかで構成されます。メッセージ・キューの構成方法の詳細は、使用するシステムのインストレーションおよび構成ガイドを参照してください。
正常に配信されたリカバリ可能メッセージは、事後確認ジャーナル(PCJ)に記録できます。pams_confirm_msg関数では、システムが現在、メッセージを格納するように構成されていない場合、force_j引数を使用してPCJファイルにメッセージを書き込みます。正常に配信されたリカバリ可能メッセージは、pams_confirm_msg関数を使用して明示的に確認しないかぎり、PCJファイルには書き込むことができないことに注意してください。
構文
引数
引数の定義
msg_seq_num
確認するリカバリ可能メッセージのメッセージ順序番号を指定します。メッセージ順序番号は、各リカバリ可能メッセージ用にOracle MessageQのメッセージ・リカバリ・システムによって生成されます。この値は、受信側プログラムが各リカバリ可能メッセージを読み取ったときに、pams_get_msg関数のPSBで渡されます。
confirmation_status
事後確認ジャーナル(PCJ)ファイル内でメッセージとともに格納される確認ステータス値を指定します。この値は、呼出し元アプリケーションにより設定されます。PCJファイルの使用の詳細は、「リカバリ可能メッセージングの使用」のトピックを参照してください。
force_j
このメッセージのジャーナル・アクションを指定します。この引数には次の事前定義済の定数があります。
表2-16 force_j
|
|
|
グループ初期化ファイルでジャーナリングが構成されている場合に、メッセージのPCJファイルへの書込みを可能にします。
|
|
ジャーナリングが構成されている場合にかぎり、PCJへの書込みを可能にします。グループ構成情報でPCJのパスが定義されていない場合、UNIXおよびWindows NT上のPCJにメッセージを書き込むことはできません。
|
|
ジャーナルが構成されているかどうかにかかわらず、ジャーナルを無効にします。
|
説明
リカバリ可能メッセージの配信と関連付けられているPSBステータス・コードは、PAMS__CONFIRMREQとPAMS__POSSDUPLです。PAMS__CONFIRMREQ PSBステータス・コードは、アプリケーションがリカバリ可能メッセージを初めて受信したことを示します。PAMS_POSSDUPLステータス・コードは、メッセージがリカバリ・ジャーナルから取得され、以前に送信されている可能性があることを示します。このステータス・コードにより、アプリケーションは必要に応じて重複したメッセージを処理するための追加の措置を講ずることができます。
PSBには、メッセージを一意に識別する順序番号も含まれています。pams_confirm_msg関数では、この順序番号は必須です。これらのいずれかのステータス・コードが存在し、pams_confirm_msg関数が呼び出されない場合、メッセージはメッセージ・リカバリ・システムにより引き続き格納され、アプリケーションが終了し再びアタッチしたときに再配信されます。
戻り値
表2-17 戻りコード
|
|
|
|
|
|
|
|
|
|
|
ジャーナル順序番号が、メッセージ・リカバリ・サービス(MRS)により認識されません。
|
|
|
ターゲット・キューの宛先キュー・ファイルへの書込み時のI/Oエラー。
|
|
|
ネットワーク・エラーにより通信リンクが中断しました。
|
|
|
|
|
|
プロセスは、Oracle MessageQにアタッチされていません。
|
|
|
メッセージは、PCJファイルに書き込まれていません。
|
|
|
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
Oracle MessageQリソースが不足しています。
|
|
|
|
関連項目
-
pams_get_msg
-
pams_get_msga
-
pams_get_msgw
-
pams_put_msg
例
リカバリ可能メッセージの受信を確認する
この例は、リカバリ可能メッセージの使用を示しています。queue_1にアタッチし、いくつかのリカバリ可能メッセージをqueue_2に入れ、終了し、queue_2にアタッチして、メッセージを取得し、それらを出力して終了します。
「queue_1」および「queue_2」という名前のキューは、初期化ファイルで定義されています。OpenVMSシステムでは、queue_2に対してDQFを設定する必要があります。完全なコードの例x_recovr.cは、examplesディレクトリ内にあります。
pams_detach_q
選択したメッセージ・キューまたはそのアプリケーションのすべてのメッセージ・キューを、メッセージ・キューイング・バスからデタッチします。アプリケーションがそのプライマリ・キューからデタッチすると、この関数によって、自動的にそのプライマリ・キューに定義されているすべてのセカンダリ・キューへのアタッチがデタッチされます。最後のメッセージ・キューがデタッチされると、アプリケーションは、自動的にOracle MessageQメッセージ・キューイング・バスからデタッチされます。
構文
引数
引数の定義
q
デタッチするキューのキュー・アドレスを指定します。この関数を使用して、プライマリ、セカンダリおよびマルチリーダーのキューをデタッチできます。
detach_opt_list
どのようにキューをデタッチするかの制御に使用するint32値の配列を指定します。この引数には次のような事前定義済の定数があります。
- PSYM_NOFLUSH_Q-メモリーに格納されている保留中のメッセージをフラッシュせずにキューをデタッチします。デフォルトの処理は、デタッチする前にキュー内の保留中のメッセージをフラッシュします。マルチリーダー・キューからメッセージがフラッシュされることはありません。
- PSYM_DETACH_ALL-アプリケーションのすべてのメッセージ・キューを、メッセージ・キューイング・バスからデタッチします。この定数を使用すると、pams_exit関数の呼出しと同じ処理が実行されます。
- PSYM_CANCEL_SEL_MASK-デタッチしようとする1つまたは複数のキューを参照するすべての選択マスクを取り消します。このオプションを指定せず、選択マスクを取り消さない場合は、Oracle MessageQによって、デタッチしようとする1つまたは複数のキューを参照するすべての選択マスクが無効化されます。pams_cancel_select関数を使用して、無効化された選択マスクを取り消す必要があります。
detach_opt_len
detach_opt_list配列内のint32値の数を指定します。int32ロングワードの最大数は32,767です。
msgs_flushed
キューからフラッシュされたメッセージの数を受け取ります。メッセージ数の統計は、デフォルトですべてのシステムで有効になっているため、この値を正確に通知するために、UNIXおよびWindows NTシステムで統計を有効にする必要はありません。
説明
リカバリ可能メッセージングに暗黙的な確認を使用している場合、次に示す処理に先だって、最後のメッセージが確認済であることを保証する必要があります。
- pams_detach_qの呼出しによる、メッセージを受信するキューからのデタッチ
- pams_exitの呼出しによる、メッセージ・キューイング・バスからのデタッチ
- アプリケーションの終了
デタッチや終了の前に、確実に最後のメッセージを確認済にしないと、そのキューが再度アタッチされたときにメッセージが再配信されます。確実に確認を行う最も簡単な方法は、最後に受信したメッセージのPSBの配信ステータスを保存しておき、要求された確認ステータスをチェックして、そのメッセージが確認済になった後で終了することです。
戻り値
関連項目
pams_exit
アプリケーションとOracle MessageQメッセージ・キューイング・バスの間のすべてのアタッチメントを終了します。一時キュー、および永続的にアクティブなマルチリーダー・キューではない永続キュー内の、すべての保留中メッセージが破棄されます。永続的にアクティブであるマルチリーダー・キュー内の保留中メッセージのみが保持されます。永続的にアクティブなキュー内のメッセージを残しておくには、pams_exit
を呼び出す前にPSYM_NOFLUSH_Qオプションを指定してpams_detach_qを呼び出します。
構文
引数
ありません。
説明
リカバリ可能メッセージングに暗黙的な確認を使用している場合、次に示す処理に先だって、最後のメッセージが確認済であることを保証する必要があります。
- pams_detach_qの呼出しによる、メッセージを受信するキューからのデタッチ
- pams_exitの呼出しによる、メッセージ・キューイング・バスからのデタッチ
- アプリケーションの終了
デタッチや終了の前に、確実に最後のメッセージを確認済にしないと、そのキューが再度アタッチされたときにメッセージが再配信されます。確実に確認を行う最も簡単な方法は、最後に受信したメッセージのPSBの配信ステータスを保存しておき、要求された確認ステータスをチェックして、そのメッセージが確認済になった後で終了することです。
戻り値
表2-20 戻りコード
|
|
|
|
|
ネットワーク・エラーにより通信リンクが中断しました。
|
|
|
Oracle MessageQにアタッチされていません。
|
|
|
|
|
|
キュー・アドレスが無効であるか、キューがプロセスにより所有されていません。
|
|
|
|
関連項目
-
pams_attach_q
-
pams_detach_q
例
メッセージ・キューイング・バスを終了する
この例は、pams_exit関数の使用方法を示しています。完全なコードの例x_exit.cは、examplesディレクトリ内にあります。
pams_get_msg
選択されたキューから次に使用可能なメッセージを取得し、それをmsg_area引数で指定された場所に移動します。選択フィルタが指定されていない場合、この関数は、メッセージの優先度に基づき先入れ/先出し(FIFO)の順序で、msg_area引数で指定されたバッファに次に使用可能なメッセージを戻します。優先度の範囲は、0(低優先度)-99(高優先度)です。たとえば、優先度1のメッセージは、常に優先度0のメッセージの前に置かれます。メッセージは、メッセージの優先度に基づき、先入れ/先出しの順序で配置されます。選択フィルタが指定されている場合、選択基準に一致するメッセージのみが取得されます。メッセージがない、または選択基準に一致するメッセージがない場合、戻りステータスはpams__NOMOREMSGになります。
アプリケーションでは、各メッセージのPSBのステータス・フィールドをチェックし、そのメッセージがリカバリ可能配信モードで送信されているかどうかを判断する必要があります。リカバリ可能メッセージを受信した場合、pams_confirm_msg関数を呼び出し、メッセージ・リカバリ・ジャーナルのディスク記憶域からそのメッセージを削除します。リカバリ可能メッセージの受信が確認されない場合、そのメッセージはリカバリ・システムによって保持されたままになり、アプリケーションでそのキューからデタッチし、再びアタッチしたときに再配信されます。
受信側プログラムは、msg_area_len引数を読み取ることにより、各メッセージがFML32バッファであるか、またはラージ・メッセージであるかを判断します。FML32バッファおよびラージ・メッセージの操作の詳細は、「Oracle MessageQメッセージの送受信」のトピックを参照してください。
構文
引数
引数の定義
msg_area
静的バッファ方式のメッセージングの場合は、取得されるメッセージの内容がOracle MessageQによって書き込まれるメモリー・リージョンのアドレスを受け取ります。FML方式のメッセージングの場合、または二重ポインタを使用する場合、取得されるメッセージのアドレスへのポインタを受け取ります。
priority
選択的なメッセージ受信のための優先度のレベルを指定します。優先度の範囲は、0(低優先度)-99(高優先度)です。priorityが0に設定されると、
pams__get_msqw
関数はすべての優先度のメッセージを取得します。priorityが1から99のいずれかの値に設定されると、
pams__get_msqw
関数は該当する優先度のメッセージのみを取得します。
source
送信側プログラムのプライマリ・キューのグループIDとキュー番号を含むデータ構造体を、次の形式で受け取ります。
class
取得されたメッセージのクラス・コードを受け取ります。クラスは、pams_put_msg関数に指定されます。Oracle MessageQでは、class引数の値にシンボリック名が使用できます。シンボリックなクラス名はMSG_CLAS_で始まります。クラス・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。UNIXおよびNTシステムでは、p_typecl.hインクルード・ファイルは編集できません。アプリケーションで使用するタイプおよびクラスのシンボルを定義するインクルード・ファイルを作成する必要があります。
Oracle MessageQで予約されているクラス・シンボルは次のとおりです。
表2-22 クラス・シンボル
|
|
|
|
|
|
|
|
|
|
|
|
MSG_CLAS_TUXEDO_TPSUCCESS
|
|
|
|
|
30000から32767 (31001-31003を除く)
|
type
取得されたメッセージのタイプ・コードを受け取ります。タイプは、pams_put_msg関数に指定されます。Oracle MessageQでは、
type引数の値にシンボリック名が使用できます。シンボリックなタイプ名はMSG_TYPE_で始まります。タイプ・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。
シンボルの値の範囲の-1から-5000はOracle MessageQで予約されています。この引数の値がゼロの場合は、メッセージ・タイプによる処理は行われません。
msg_area_len
- 最大32767バイトの静的メッセージ・バッファのバッファ・サイズを指定します(バイト単位)。msg_areaバッファは、取得されたメッセージの格納に使用されます。
- FML32バッファなどの二重バッファを使用しているメッセージの場合、この引数にはシンボルPSYM_MSG_BUFFER_PTRが含まれ、このメッセージが取得対象メッセージのアドレスへのポインタであることが示されます。msg_areaバッファには、メッセージ・ポインタが含まれます。メッセージのサイズは、large_size引数で戻されます。msg_areaバッファは、取得されたメッセージの格納に使用されます。large_area_len引数は、メッセージを受信するためのメッセージ・バッファの指定に使用されます。取得されたバッファが割り当てられた領域より大きい場合、領域が動的に再割当てされ、新しいバッファ・サイズがlarge_area_lenに格納されます。
- ラージ・メッセージ(32767バイトより大きいバッファ方式のメッセージ)の場合、この引数にはシンボルPSYM_MSG_LARGEが含まれ、メッセージ・バッファが32Kより大きいことが示されます。メッセージのサイズは、large_size引数で戻されます。msg_areaバッファは、取得されたメッセージの格納に使用されます。large_area_len引数は、ラージ・メッセージを受信するためのメッセージ・バッファの指定に使用されます。
len_data
最大32767バイトのメッセージを扱う静的バッファ方式のメッセージングの場合、この引数はメッセージ・キューから取得され、msg_area引数により指定された領域に格納されたバイト数を受け取ります。このフィールドは、二重バッファおよびFML方式メッセージのPSYM_MSG_BUFFER_PTRシンボルおよび32767バイトより大きいバッファ方式メッセージのPSYM_MSG_LARGEも受け取ります。
sel_filter
アプリケーションが選択的にメッセージを取得できる基準を指定します。この引数には、次のいずれかの選択基準が含まれます。
- デフォルトの選択
- メッセージ・キューによる選択
- メッセージの属性
- メッセージ・ソース
- pams_set_select関数を使用した複合選択
sel_filter引数は、次のように2つのワードで構成されています。
デフォルトの選択
アプリケーションでは、メッセージが到着した順序に基づいてキューからメッセージを読み取ることができます。デフォルトの選択、
PSEL_DEFAULTでは、メッセージ・キューから次の保留中のメッセージを読み取ります。メッセージは、優先度別に格納され、次に、FIFOの順序で格納されます。このことを明示的に指定するには、
sel_filter引数内の両方のワードを0に設定する必要があります。
メッセージ・キューによる選択
アプリケーションがキュー・タイプまたはキュー・タイプの組合せに基づいてメッセージを取得できるようにします。この選択基準は、最初に処理するキュー上で基準に一致する最初の保留中メッセージを取得するために使用されます。FIFOの順序は、各キュー内で維持されます。この引数には次のような事前定義済の定数があります。
表2-23 メッセージ・キューによる選択
|
|
|
|
|
アプリケーションは、プライマリ・キュー(PQ)からのみ読み取ることができます。選択変数は0である必要があります。
|
|
|
アプリケーションは、代替キュー(AQ)からのみ読み取ることができます。キュー・タイプがセカンダリ・キュー(SQ)でも読取り可能です。
|
|
|
初めにプライマリ・キューから、次に代替キューから選択的な取得を試行します。
|
|
|
初めに代替キューから、次にプライマリ・キューから選択的な取得を試行します。
|
|
|
初めにタイマー・キュー(TQ)から、次にプライマリ・キューからメッセージの選択的な取得を試行します。
|
|
|
初めにタイマー・キュー(TQ)から、次にプライマリ・キューから、最後に代替キューからメッセージの選択的な取得を試行します。
|
|
|
ユーザー・コールバック・キュー(UCB)からのみ、メッセージを取得します。
|
メッセージの属性による選択
アプリケーションが、メッセージ・タイプ、クラスまたは優先度に基づいてメッセージを選択できるようにします。この引数には次のような事前定義済の定数があります。
表2-24 メッセージの属性による選択
|
|
|
|
|
プライマリ・キューから、選択変数ワード内のタイプ値と一致する最初の保留中メッセージを選択します。
|
|
|
プライマリ・キューから、選択変数ワード内のクラス値と一致する最初の保留中メッセージを選択します。
|
|
|
プライマリ・キューから、両端の数を含めて0から99の整数値と等しい優先度を持つ(または選択変数の値と等しい)最初の保留中メッセージを選択します。直接的な整数値の指定は、優先度によるメッセージの選択の際によく使われる方法です。
PSEL_PRI_ANY を使用すると、すべての優先度の保留中メッセージを読み取ることができます。 PSEL_PRI_P0 を設定すると、優先度0の保留中メッセージのみを取得できます。 PSEL_PRI_P1 を設定すると、厳密に優先度1の保留中メッセージを取得できます。
|
メッセージ・ソースによる選択
ソース・グループID、キュー番号またはその両方による、プライマリおよびセカンダリ・キューからの保留中メッセージの選択を可能にします。ソースによる選択の形式は次のとおりです。
指定可能な
sel_filter引数とその処理のいくつかの例を次に示します。
表2-25 sel_filter引数
|
|
|
すべてのメッセージに対してフィルタが適用されません。すべてのメッセージを取得できます。
|
|
q_addressが一致するメッセージのみが取得されます。
|
|
指定された選択マスクに正確に一致するメッセージのみが取得されます。
|
複合選択
アプリケーションで、メッセージ・キューが検索される順序の複合ルールの編成を可能にします。pams_set_select関数を使用すると、
sel_filter引数の下位のワードで使用できるカスタム選択マスクをアプリケーションで作成できます。複合選択の形式は次のとおりです。
psb
最終的な完了ステータスが含まれるPAMSステータス・ブロックを受け取ります。
psb引数は、リカバリ可能メッセージの送受信時に使用されます。PSB構造体には、メッセージ・リカバリ・システムからのステータス情報が格納され、メッセージの送受信の後にチェックできます。PSBの構造は、次のとおりです。
表2-26 PSB構造体
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
関数の完了ステータス。リカバリ可能メッセージの場合、このフィールドには PAMS__CONFIRMREQ または PAMS__POSSDUPL が含まれます。リカバリ可能メッセージ以外のメッセージの場合、値P AMS__SUCCESS も含まれている可能性があります。
|
|
|
|
メッセージが送信されるときにそのメッセージに割り当てられ、宛先PSBへのメッセージの末尾に付けられる一意の番号。この番号は、リカバリ可能メッセージを解放するための pams_confirm_msg に対する入力です。
|
|
|
|
このフィールドは、 pams_get_msg 関数では使用されません。
|
|
|
|
このフィールドは、pams_get_msg関数では使用されません。
|
|
|
|
|
show_buffer
Oracle MessageQがメッセージ・ヘッダーから抽出する追加情報を受け取ります。
show_buffer引数の構造は次のとおりです。
表2-27 show_buffer引数
|
|
|
|
|
show_buffer構造体のバージョン。有効な値は次のとおりです。
|
|
|
アプリケーションのバッファへの show_buffer情報の転送に関連するステータス・コード。有効なシンボルは次のとおりです。
受信側バッファのオーバーフローにより情報が失われました。0-戻されたメッセージはありません。転送する情報はありません。
|
|
|
|
|
|
show_buffe rの各フィールドのステータスを示すビット配列。設定されたビットは有効なフィールドを示し、クリアされたビットは不確定データまたは割り当てられた show_buffer メモリーの終わりを示します。flagsフィールドのシンボルは次のとおりです。
PSYM_SHOW_ORIGINAL_TARGET
PSYM_SHOW_ORIGINAL_SOURCE
|
|
|
|
|
|
|
制御セクションをその最大の24バイトまで満たします。
|
|
|
制御セクションをその最大の24バイトまで満たします。
|
|
|
制御セクションをその最大の24バイトまで満たします。
|
|
|
制御セクションをその最大の24バイトまで満たします。
|
|
|
制御セクションをその最大の24バイトまで満たします。
|
|
|
制御セクションをその最大の24バイトまで満たします。
|
|
|
最新のメッセージ・ターゲットの q_address。
|
|
|
|
|
|
|
|
|
|
|
|
メッセージをキューイングするために使用された配信モード。これは、必ずしもメッセージの生成に使用された配信モードではありません。
|
|
|
メッセージをキューイングするために使用された優先度。
|
|
|
2バイトおよび4バイト整数のバイト順序またはコード体系。可能な設定は次のとおりです。
PSYM_VAX_BYTE_ORDERまたはPSYM_LITTLE_ENDIAN PSYM_NETWORK_BYTE_ORDERまたはPSYM_BIG_ENDIAN PSYM_FML
|
|
|
メッセージに関連付けられた32バイトの相関識別子。
|
show_buffer_len
show_buffer引数で定義されたバッファの長さ(バイト単位)を指定します。最小の長さは40バイトです。バッファのサイズが小さすぎてすべての情報が入らない場合は、戻りコードPAMS__BUFFEROVFが
show_buffer転送ステータスに含まれます。
large_area_len
32Kより大きいメッセージを受信するためのメッセージ領域のサイズを指定します。二重バッファ(
PSYM_MSG_BUFFER_POINTERで示す)を使用する場合は、メッセージ・バッファの長さも指定します。この引数には、再割当て後の二重バッファおよびFML32バッファの長さも格納されます。
large_size
メッセージ・バッファに書き込まれたラージ・メッセージ、二重バッファ・メッセージまたはFML32メッセージの実際のサイズを戻します。
nullarg_3
プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。
戻り値
表2-28 戻りコード
|
|
|
|
|
受信したメッセージがユーザーのメッセージ領域より大きくなっています。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
指定されたshow_bufferのサイズが小さすぎます。
|
|
|
使用可能なメッセージ・ブロックがこれ以上ありません。
|
|
|
FMLメッセージの内部フォーマットで問題が検出されました。処理のエラーまたはデータ破壊の可能性があります。
|
|
|
メッセージ・バッファを正しくキューイングできませんでした。
|
|
|
msg_area_len引数は、正またはゼロにする必要があります。
|
|
|
|
|
|
FML32バッファを受信しましたが、 msg_area_len引数が
PSYM_MSG_BUFFER_PTRに設定されていません。
|
|
|
ネットワーク・エラーにより通信リンクが中断しました。
|
|
|
|
|
|
キュー・アクセス制御ファイルが見つかりませんでした。
|
|
|
バッファ・ポインタを再度割り当てるためのメモリー・リソースが不足しています。
|
|
|
アクセスを許可するためのマルチリーダー・キュー・リソースが不足しています。
|
|
|
プロセスは、Oracle MessageQにアタッチされていません。
|
|
|
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
|
|
|
メッセージ・バッファから正しく読み取ることができませんでした。
|
|
|
リソースは無効になっており、ユーザーが解放する必要があります。
|
|
|
|
|
|
|
PBS配信ステータス
表2-29 PBS配信ステータス
|
|
|
|
|
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
|
関連項目
-
pams_get_msga
-
pams_get_msgw
-
pams_put_msg
-
pams_set_select
例
メッセージを読み取る
この例はpams_get_msg
関数を使用して、現在キューに存在するすべてのメッセージを取得し、出力関数に送信します。完全なコードの例x_get.cは、examplesディレクトリ内にあります。
pams_get_msga
pams_get_msga
関数は、OpenVMSシステム上でのみ使用可能です。
メッセージ受信の非同期通知をリクエストします。pams_get_msga
関数は、メッセージがキューに届くと非同期システム・トラップ(AST)ルーチンをトリガーします。ASTをトリガーするか、イベント・フラグを設定するかまたはその両方により、アプリケーションへの通知が行われます。
選択フィルタが指定されていない場合、この関数は、メッセージの優先度に基づき先入れ/先出し(FIFO)の順序で、ユーザーが指定したmsg_area引数に次に使用可能なメッセージを戻します。優先度の範囲は、0(低優先度)-99(高優先度)です。たとえば、優先度1のメッセージは、常に優先度0のメッセージの前に置かれます。メッセージは、メッセージの優先度に基づき、先入れ/先出しの順序で配置されます。選択フィルタが指定されている場合、選択基準に一致するメッセージのみが取得され、一致するメッセージが届いた場合のみASTまたはイベント・フラグがトリガーされます。
キューにリカバリ可能メッセージが送信されたとき、受信側プログラムでは、pams_confirm_msg関数を使用してメッセージの受信を確認できます。pams_confirm_msg関数により、正常に配信されたメッセージをメッセージ・リカバリ・システムから削除できます。Oracle MessageQリカバリ・システムの詳細は、「リカバリ可能メッセージングの使用」のトピックを参照してください。
FML32バッファおよびラージ・メッセージの操作の詳細は、「Oracle MessageQメッセージの送受信」のトピックを参照してください。
構文
引数
引数の定義
msg_area
静的バッファ方式のメッセージングの場合は、取得されるメッセージの内容がOracle MessageQによって書き込まれるメモリー・リージョンのアドレスを受け取ります。FML方式のメッセージングの場合、または二重ポインタを使用する場合、取得されるメッセージのアドレスへのポインタを受け取ります。pams_get_msgaで二重バッファ・ポインタを使用する場合、新しいバッファ・サイズがlarge_sizeで戻されます。(このことは、新しいバッファ・サイズがlarge_area_lenに戻されるpams_get_msg[w}とは異なります。)
priority
選択的なメッセージ受信のための優先度のレベルを指定します。優先度の範囲は、0 (低優先度)から99 (高優先度)です。
source
送信側プログラムのプライマリ・キューのグループIDとキュー番号を含むデータ構造体を、次の形式で受け取ります。
class
取得されたメッセージのクラス・コードを受け取ります。クラスは、pams_put_msg関数に指定されます。Oracle MessageQでは、
class引数の値にシンボリック名が使用できます。シンボリックなクラス名はMSG_CLAS_で始まります。クラス・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。
Oracle MessageQで予約されているクラス・シンボルは次のとおりです。
表2-31 クラス・シンボル
|
|
|
|
|
|
|
|
|
|
|
|
MSG_CLAS_TUXEDO_TPSUCCESS
|
|
|
|
|
30000から32767 (31001-31003を除く)
|
type
取得されたメッセージのタイプ・コードを受け取ります。タイプは、pams_put_msg関数に指定されます。Oracle MessageQでは、
type引数の値にシンボリック名が使用できます。シンボリックなタイプ名はMSG_TYPE_で始まります。タイプ・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。
シンボルの値の範囲の-1から-5000はOracle MessageQで予約されています。この引数の値がゼロの場合は、メッセージ・タイプによる処理は行われません。
msg_area_len
- 最大32767バイトのバッファ方式メッセージのバッファ・サイズを指定します(バイト単位)。msg_areaバッファは、取得されたメッセージの格納に使用されます。
- FML32バッファなどの二重バッファを使用しているメッセージの場合、この引数にはシンボルPSYM_MSG_BUFFER_PTRが含まれ、このメッセージが取得対象メッセージのアドレスへのポインタであることが示されます。msg_areaバッファには、メッセージ・ポインタが含まれます。メッセージのサイズは、large_size引数で戻されます。msg_areaバッファは、取得されたメッセージの格納に使用されます。large_area_len引数は、メッセージを受信するためのメッセージ・バッファの指定に使用されます。取得されたバッファが割り当てられた領域より大きい場合、領域が動的に再割当てされ、新しいバッファ・サイズがlarge_sizeに格納されます。
- ラージ・メッセージ(32767バイトより大きいバッファ方式のメッセージ)の場合、この引数にはシンボルPSYM_MSG_LARGEが含まれ、メッセージ・バッファが32Kより大きいことが示されます。メッセージのサイズは、large_size引数で戻されます。取得されたメッセージの格納にmsg_areaバッファが使用されます。large_area_len引数は、ラージ・メッセージを受信するためのメッセージ・バッファの指定に使用されます。
len_data
最大32767バイトのメッセージを扱う静的バッファ方式のメッセージングの場合、この引数はメッセージ・キューから取得され、
msg_area引数により指定された領域に格納されたバイト数を受け取ります。このフィールドは、FML方式メッセージのPSYM_MSG_BUFFER_PTRシンボルおよび32767バイトより大きいバッファ方式メッセージのPSYM_MSG_LARGEも受け取ります。
sel_filter
アプリケーションが選択的にメッセージを取得できる基準を指定します。この引数には、次のいずれかの選択基準が含まれます。
- デフォルトの選択
- メッセージ・キューによる選択
- メッセージの属性
- メッセージ・ソース
- pams_set_select関数を使用した複合選択
sel_filter引数は、次のように2つのワードで構成されています。
アプリケーションでは、メッセージが到着した順序に基づいてキューからメッセージを読み取ることができます。デフォルトの選択であるPSEL_DEFAULTでは、メッセージ・キューから次の保留中のメッセージを読み取ります。メッセージは、優先度別に格納され、次に、FIFOの順序で格納されます。このことを明示的に指定するには、
sel_filter引数内の両方のワードを0に設定する必要があります。
アプリケーションがキュー・タイプまたはキュー・タイプの組合せに基づいてメッセージを取得できるようにします。この選択基準は、最初に処理するキュー上で基準に一致する最初の保留中メッセージを取得するために使用されます。FIFOの順序は、各キュー内で維持されます。
この引数には次のような事前定義済の定数があります。
表2-32 sel_filter引数
|
|
|
|
|
アプリケーションは、プライマリ・キュー(PQ)からのみ読み取ることができます。選択変数は0である必要があります。
|
|
|
アプリケーションは、代替キュー(AQ)からのみ読み取ることができます。キュー・タイプがセカンダリ・キュー(SQ)でも読取り可能です。
|
|
|
初めにプライマリ・キューから、次に代替キューから選択的な取得を試行します。
|
|
|
初めに代替キューから、次にプライマリ・キューから選択的な取得を試行します。
|
|
|
初めにタイマー・キュー(TQ)から、次にプライマリ・キューからメッセージの選択的な取得を試行します。
|
|
|
初めにタイマー・キュー(TQ)から、次にプライマリ・キューから、最後に代替キューからメッセージの選択的な取得を試行します。
|
|
|
ユーザー・コールバック・キュー(UCB)からのみ、メッセージを取得します。
|
メッセージの属性による選択
アプリケーションが、メッセージ・タイプ、クラスまたは優先度に基づいてメッセージを選択できるようにします。この引数には次のような事前定義済の定数があります。
表2-33 メッセージ属性引数
|
|
|
|
|
プライマリ・キューから、選択変数ワード内のタイプ値と一致する最初の保留中メッセージを選択します。
|
|
|
プライマリ・キューから、選択変数ワード内のクラス値と一致する最初の保留中メッセージを選択します。
|
|
PSEL_PRI_ANY PSEL_PRI_P0 PSEL_PRI_P1
|
プライマリ・キューから、両端の数を含めて0から99の整数値と等しい優先度を持つ(または選択変数の値と等しい)最初の保留中メッセージを選択します。直接的な整数値の指定は、優先度によるメッセージの選択の際によく使われる方法です。
PSEL_PRI_ANY を使用すると、すべての優先度の保留中メッセージを読み取ることができます。 PSEL_PRI_P0 を設定すると、優先度0の保留中メッセージのみを取得できます。 PSEL_PRI_P1 を設定すると、厳密に優先度1の保留中メッセージを取得できます。
|
メッセージ・ソースによる選択
ソース・グループID、キュー番号またはその両方による、プライマリおよびセカンダリ・キューからの保留中メッセージの選択を可能にします。ソースによる選択の形式は次のとおりです。
指定可能な
sel_filter引数とその処理のいくつかの例を次に示します。
表2-34 sel_filter引数
|
|
|
すべてのメッセージに対してフィルタが適用されません。すべてのメッセージを取得できます。
|
|
q_addressが一致するメッセージのみが取得されます。
|
|
指定された選択マスクに正確に一致するメッセージのみが取得されます。
|
複合選択
アプリケーションで、メッセージ・キューが検索される順序の複合ルールの編成を可能にします。pams_set_select関数を使用すると、
sel_filter引数の下位のワードで使用できるカスタム選択マスクをアプリケーションで作成できます。複合選択の形式は次のとおりです。
psb
最終的な完了ステータスが含まれるPAMSステータス・ブロックを受け取ります。
psb引数は、リカバリ可能メッセージの送受信時に使用されます。PSB構造体には、メッセージ・リカバリ・システムからのステータス情報が格納され、メッセージの送受信の後にチェックできます。PSBの構造は、次のとおりです。
表2-35 psb構造体
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
関数の完了ステータス。リカバリ可能メッセージの場合、このフィールドには PAMS__CONFIRMREQ または PAMS__POSSDUPL が含まれます。リカバリ可能メッセージ以外のメッセージの場合、値 PAMS__SUCCESS も含まれている可能性があります。
|
|
|
|
メッセージが送信されるときにそのメッセージに割り当てられ、宛先PSBへのメッセージの末尾に付けられる一意の番号。この番号は、リカバリ可能メッセージを解放するためのpams_confirm_msgに対する入力です。
|
|
|
|
このフィールドは、pams_get_msga関数では使用されません。
|
|
|
|
このフィールドは、pams_get_msga関数では使用されません。
|
|
|
|
|
注意: |
この関数はOpenVMSのASTサービスを使用するため、PSBで戻されたステータス情報をアプリケーションでチェックする必要があります。 |
show_buffer
Oracle MessageQがメッセージ・ヘッダーから抽出する追加情報を受け取ります。
show_buffer引数の構造は次のとおりです。
表2-36 show_buffer引数
|
|
|
|
|
show_buffer構造体のバージョン。有効な値は次のとおりです。
|
|
|
アプリケーションのバッファへの show_buffer情報の転送に関連するステータス・コード。有効なシンボルは次のとおりです。
PAMS__SUCCESS-使用可能なすべての情報が転送されました。
PAMS__BUFFEROVF-受信側バッファのオーバーフローにより情報が失われました。0-戻されたメッセージはありません。転送する情報はありません。
|
|
|
|
|
|
show_bufferの各フィールドのステータスを示すビット配列。設定されたビットは有効なフィールドを示し、クリアされたビットは不確定データまたは割り当てられたshow_bufferメモリーの終わりを示します。flagsフィールドのシンボルは次のとおりです。
PSYM_SHOW_VERSION PSYM_SHOW_STATUS PSYM_SHOW_SIZE PSYM_SHOW_FLAGS PSYM_SHOW_TARGET PSYM_SHOW_ORIGINAL_TARGET PSYM_SHOW_SOURCE PSYM_SHOW_ORIGINAL_SOURCE PSYM_SHOW_DELIVERY PSYM_SHOW_PRIORITY PSYM_SHOW_ENDIAN PSYM_SHOW_CORRELATION_ID
|
|
|
制御セクションをその最大の40バイトまで満たします。
|
|
|
制御セクションをその最大の40バイトまで満たします。
|
|
|
制御セクションをその最大の40バイトまで満たします。
|
|
|
制御セクションをその最大の40バイトまで満たします。
|
|
|
制御セクションをその最大の40バイトまで満たします。
|
|
|
制御セクションをその最大の40バイトまで満たします。
|
|
|
最新のメッセージ・ターゲットの q_address。
|
|
|
|
|
|
|
|
|
|
|
|
メッセージをキューイングするために使用された配信モード。これは、必ずしもメッセージの生成に使用された配信モードではありません。
|
|
|
メッセージをキューイングするために使用された優先度。
|
|
|
2バイトおよび4バイト整数のバイト順序またはコード体系。可能な設定は次のとおりです。
PSYM_VAX_BYTE_ORDERまたはPSYM_LITTLE_ENDIAN PSYM_NETWORK_BYTE_ORDERまたはPSYM_BIG_ENDIAN PSYM_FML
|
|
|
メッセージに関連付けられた32バイトの相関識別子。
|
show_buff_len
show_buffer引数で定義されたバッファの長さ(バイト単位)を指定します。最小の長さは40バイトです。バッファのサイズが小さすぎてすべての情報が入らない場合は、戻りコードPAMS__BUFFEROVFが
show_buffer転送ステータスに含まれます。
large_area_len
32Kより大きいメッセージを受信するためのメッセージ領域のサイズを指定します。二重バッファ(
PSYM_MSG_BUFFER_POINTERで示す)を使用する場合は、メッセージ・バッファの長さも指定します。
large_size
メッセージ・バッファに書き込まれたラージ・メッセージ、二重バッファ・メッセージまたはFML32メッセージの実際のサイズを戻します。pams_get_msgaで二重バッファ・ポインタを使用する場合、新しいバッファ・サイズがlarge_sizeで戻されます。(このことは、新しいバッファ・サイズがlarge_area_lenに戻されるpams_get_msg[w}とは異なります。)
actrtn
アクション・ルーチンのエントリ・ポイントであるint32値のアドレスを指定します。このアクション・ルーチンは、pams_get_msga関数が完了すると実行されます。
actparm
actrtn引数で指定されたアクション・ルーチンが呼び出されたときに渡すint32値を指定します。
flag_id
pams_get_msga関数が完了したときに設定するフラグ番号のint32値を指定します。pams_get_msga関数が実行されるとき、このフラグはクリアされます。この引数の値が指定されない場合、フラグは使用されません。
nullarg_3
プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。
説明
pams_get_msga関数は非同期で実行されるため、いくつかの引数値はメッセージが到着した後にのみ取得されます。これらの引数値は、メッセージ・バッファ、ソース、クラス、メッセージのタイプ、配信ステータスが含まれるPAMSステータス・ブロック(PSB)ステータス・コード、UMAステータスおよびメッセージの順序番号です。これらの値は、メッセージの到着によりASTルーチンがトリガーされるか、またはイベント・フラグが設定されるまで設定されません。
pams_get_msga関数は、パラメータが呼び出されたときに値によってASTルーチンに渡されるASTパラメータを指定します。このパラメータは、メッセージに含まれる情報のコンテキストを提供するために使用され、メッセージに対して必要な特定のプロセスを識別するために使用できます。次に、ASTを使用したプログラミングの推奨事項とルールを示します。
- 同時にポストされる各ASTに対して、メインラインとは別にコンテキスト領域を作成します。適切なコンテキストがpams_get_msga関数によって配信されるデータと確実に関連付けられるように、コンテキスト領域と関連付けられたアドレスまたはインデックスをASTパラメータとして使用する必要があります。
- 非同期で入力されたすべてのフィールドのアドレスが、ASTがポストされている期間全体にわたって有効に維持されるようにします。ASTの使用に関連する一般的なエラーは、スタック上のフィールドに入力するASTリクエストをポストし、呼出し側が戻るとすぐに無効になるというものです。
- データは、次のメカニズムによって、ASTルーチンとメインラインの間で渡されます。
- Oracle MessageQメッセージ。
- インターロックされたキューイング命令により管理されるイベント・キュー。
- データへのアクセスを明確化する、メインラインとASTルーチンの間の共有データ・フィールド。各ASTリクエストに対してコンテキスト領域を使用することで、これを実現できます。
- メインラインとASTルーチンの間で共有される複雑なデータ構造へのアクセスは、アクセスをASTのセーフ・クリティカル・セクション内で行うことによってシリアライズされる必要があります。これを行う1つの方法は、$SETASTシステム・サービスを使用することです。
戻り値
表2-37戻りコード
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
msg_area_len引数は、正またはゼロにする必要があります。
|
|
|
|
|
|
リソースにアクセスできません。ACLチェックに失敗しました。
|
|
|
バッファ・ポインタを再度割り当てるためのメモリー・リソースが不足しています。
|
|
|
アプリケーションは、Oracle MessageQにアタッチされていません。
|
|
|
|
|
|
|
|
|
リソースは無効になっており、ユーザーが解放する必要があります。
|
|
|
|
|
|
|
PSB配信ステータス
関連項目
-
pams_cancel_get
-
pams_get_msg
-
pams_get_msgw
-
pams_put_msg
-
pams_set_select
pams_get_msgw
指定されたキューから次に使用可能なメッセージを取得し、それをmsg_areaで指定された場所に移動します。
引数この関数は、メッセージがキューに届くまで、またはユーザー指定のタイムアウト期間が経過するまで待機します。
選択フィルタが指定されていない場合、この関数は、メッセージの優先度に基づき先入れ/先出し(FIFO)の順序で、ユーザーが指定したmsg_area引数に次に使用可能なメッセージを戻します。優先度の範囲は、0(低優先度)-99(高優先度)です。priorityが0に設定されると、pams_get_msqw
関数はすべての優先度のメッセージを取得します。priorityが1から99のいずれかの値に設定されると、pams_get_msqw
関数は該当する優先度のメッセージのみを取得します。メッセージは、メッセージの優先度に基づき、先入れ/先出しの順序で配置されます。選択フィルタが指定されている場合、選択基準に一致するメッセージのみが取得されます。timeout期間が経過する前にメッセージが届かない場合、または選択条件に適合するメッセージが存在しない場合、戻りステータスはPAMS_TIMEOUTとなります。
キューにリカバリ可能メッセージが送信されたとき、受信側プログラムでは、pams_confirm_msg関数を使用してメッセージの受信を確認できます。pams_confirm_msg関数により、正常に配信されたメッセージをメッセージ・リカバリ・システムから削除できます。Oracle MessageQリカバリ・システムの詳細は、「リカバリ可能メッセージングの使用」のトピックを参照してください。
FML32バッファおよびラージ・メッセージの操作の詳細は、「Oracle MessageQメッセージの送受信」のトピックを参照してください。
構文
引数
引数の定義
msg_area
バッファ方式のメッセージングの場合は、取得されるメッセージの内容がOracle MessageQによって書き込まれるメモリー・リージョンのアドレスを受け取ります。FML方式のメッセージングの場合、または二重ポインタを使用する場合、取得されるメッセージのアドレスへのポインタを受け取ります。
priority
選択的なメッセージ受信のための優先度のレベルを指定します。優先度の範囲は、0(低優先度)-99(高優先度)です。priorityが0に設定されると、
pams__get_msqw
関数はすべての優先度のメッセージを取得します。priorityが1から99のいずれかの値に設定されると、
pams__get_msqw
関数は該当する優先度のメッセージのみを取得します。
source
送信側プログラムのプライマリ・キューのグループIDとキュー番号を識別する構造体を、次の形式で受け取ります。
class
取得されたメッセージのクラス・コードを受け取ります。クラスは、pams_put_msg関数の引数に指定されます。Oracle MessageQでは、
class引数の値にシンボリック名が使用できます。シンボリックなクラス名はMSG_CLAS_で始まります。クラス・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。UNIXおよびNTシステムでは、p_typecl.hインクルード・ファイルは編集できません。アプリケーションで使用するタイプおよびクラスのシンボルを定義するインクルード・ファイルを作成する必要があります。
Oracle MessageQで予約されているクラス・シンボルは次のとおりです。
表2-40 クラス・シンボル
|
|
|
|
|
|
|
|
|
|
|
|
MSG_CLAS_TUXEDO_TPSUCCESS
|
|
|
|
|
30000から32767 (31001-31003を除く)
|
type
取得されたメッセージのタイプ・コードを受け取ります。タイプは、pams_put_msg関数の引数に指定されます。Oracle MessageQでは、
type引数の値にシンボリック名が使用できます。シンボリックなタイプ名はMSG_TYPE_で始まります。タイプ・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。
シンボルの値の範囲の-1から-5000はOracle MessageQで予約されています。この引数の値がゼロの場合は、メッセージ・タイプによる処理は行われません。
msg_area_len
- 最大32767バイトのバッファ方式メッセージのバッファ・サイズを指定します(バイト単位)。msg_areaバッファは、取得されたメッセージの格納に使用されます。
- FML32バッファなどの二重バッファを使用しているメッセージの場合、この引数にはシンボルPSYM_MSG_BUFFER_PTRが含まれ、このメッセージが取得対象メッセージのアドレスへのポインタであることが示されます。msg_areaバッファには、メッセージ・ポインタが含まれます。メッセージのサイズは、large_size引数で戻されます。msg_areaバッファは、取得されたメッセージの格納に使用されます。large_area_len引数は、メッセージを受信するためのメッセージ・バッファの指定に使用されます。取得されたバッファが割り当てられた領域より大きい場合、領域が動的に再割当てされ、新しいバッファ・サイズがlarge_area_lenに格納されます。
- ラージ・メッセージ(32767バイトより大きいバッファ方式のメッセージ)の場合、この引数にはシンボルPSYM_MSG_LARGEが含まれ、メッセージ・バッファが32Kより大きいことが示されます。メッセージのサイズは、large_size引数で戻されます。msg_areaバッファは、取得されたメッセージの格納に使用されます。large_area_len引数は、ラージ・メッセージを受信するためのメッセージ・バッファの指定に使用されます。
len_data
最大32767バイトのメッセージを扱う静的バッファ方式のメッセージングの場合、この引数はメッセージ・キューから取得され、
msg_area引数により指定された領域に格納されたバイト数を受け取ります。このフィールドは、二重バッファおよびFML方式メッセージのPSYM_MSG_BUFFER_PTRシンボルおよび32767バイトより大きいバッファ方式メッセージのPSYM_MSG_LARGEも受け取ります。
timeout
アプリケーションに制御を戻す前にpams_get_msg関数がメッセージの到着を待機する時間の最大値を指定します。タイムアウト値は、1/10 (0.1)秒単位で入力します。値100は、10秒のタイムアウトを示します。メッセージが届く前にタイムアウトが発生した場合、ステータス・コードPAMS__TIMEOUTが戻されます。
無期限のタイムアウト期間が必要な場合は、この引数を0に設定します。UNIXおよびWindows NTシステムでは、この引数の値がゼロの場合はこの関数が無期限またはメッセージを受信するまでブロックします。OpenVMSシステムでは、この関数は約5日間またはメッセージを受信するまで待機します。
sel_filter
アプリケーションが選択的にメッセージを取得する基準を指定します。この引数には、次のいずれかの選択基準が含まれます。
- デフォルトの選択
- メッセージ・キューによる選択
- メッセージの属性
- メッセージ・ソース
-
pams_set_select
関数を使用した複合選択
sel_filter引数は、次のように2つのワードで構成されています。
デフォルトの選択
アプリケーションでは、メッセージが到着した順序に基づいてキューからメッセージを読み取ることができます。デフォルトの選択であるPSEL_DEFAULTでは、メッセージ・キューから次の保留中のメッセージを読み取ります。メッセージは、優先度別に格納され、次に、FIFOの順序で格納されます。このことを明示的に指定するには、
sel_filter引数内の両方のワードを0に設定する必要があります。
メッセージ・キューによる選択
アプリケーションがキュー・タイプまたはキュー・タイプの組合せに基づいてメッセージを取得できるようにします。この選択基準は、最初に処理するキュー上で基準に一致する最初の保留中メッセージを取得するために使用されます。FIFOの順序は、各キュー内で維持されます。この引数には次のような事前定義済の定数があります。
表2-41 メッセージ・キューによる選択
|
|
|
|
|
アプリケーションは、プライマリ・キュー(PQ)からのみ読み取ることができます。選択変数は0である必要があります。
|
|
|
アプリケーションは、代替キュー(AQ)からのみ読み取ることができます。キュー・タイプがセカンダリ・キュー(SQ)でも読取り可能です。
|
|
|
初めにプライマリ・キューから、次に代替キューから選択的な取得を試行します。
|
|
|
初めに代替キューから、次にプライマリ・キューから選択的な取得を試行します。
|
|
|
初めにタイマー・キュー(TQ)から、次にプライマリ・キューからメッセージの選択的な取得を試行します。
|
|
|
初めにタイマー・キュー(TQ)から、次にプライマリ・キューから、最後に代替キューからメッセージの選択的な取得を試行します。
|
|
|
ユーザー・コールバック・キュー(UCB)からのみ、メッセージを取得します。
|
メッセージの属性による選択
アプリケーションが、メッセージ・タイプ、クラスまたは優先度に基づいてメッセージを選択できるようにします。この引数には次のような事前定義済の定数があります。
表2-42 メッセージの属性による選択
|
|
|
|
|
プライマリ・キューから、選択変数ワード内のタイプ値と一致する最初の保留中メッセージを選択します。
|
|
|
プライマリ・キューから、選択変数ワード内のクラス値と一致する最初の保留中メッセージを選択します。
|
|
PSEL_PRI_ANY PSEL_PRI_P0 PSEL_PRI_P1
|
プライマリ・キューから、両端の数を含めて0から99の整数値と等しい優先度を持つ(または選択変数の値と等しい)最初の保留中メッセージを選択します。直接的な整数値の指定は、優先度によるメッセージの選択の際によく使われる方法です。
PSEL_PRI_ANYを使用すると、すべての優先度の保留中メッセージを読み取ることができます。PSEL_PRI_P0を設定すると、優先度0の保留中メッセージのみを取得できます。PSEL_PRI_P1を設定すると、厳密に優先度1の保留中メッセージを取得できます。
|
メッセージ・ソースによる選択
ソース・グループID、キュー番号またはその両方による、プライマリおよびセカンダリ・キューからの保留中メッセージの選択を可能にします。ソースによる選択の形式は次のとおりです。
指定可能な
sel_filter引数とその処理のいくつかの例を次に示します。
表2-43 sel_filter引数
|
|
|
すべてのメッセージに対してフィルタが適用されません。すべてのメッセージを取得できます。
|
|
q_addressが一致するメッセージのみが取得されます。
|
|
指定された選択マスクに正確に一致するメッセージのみが取得されます。
|
複合選択
アプリケーションで、メッセージ・キューが検索される順序の複合ルールの編成を可能にします。pams_set_select関数を使用すると、
sel_filter引数の下位のワードで使用できるカスタム選択マスクをアプリケーションで作成できます。複合選択の形式は次のとおりです。
psb
最終的な完了ステータスが含まれるPAMSステータス・ブロックを受け取ります。
psb引数は、リカバリ可能メッセージの送受信時に使用されます。PSB構造体には、メッセージ・リカバリ・システムからのステータス情報が格納され、メッセージの送受信の後にチェックできます。PSBの構造は、次のとおりです。
表2-44 PSB構造体
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
関数の完了ステータス。これには、MRSからのステータスが含まれます。また、メッセージがリカバリ可能な状態で送信されなかった場合には、値PAMS__SUCCESSが含まれる可能性があります。
|
|
|
|
メッセージが送信されるときにそのメッセージに割り当てられ、宛先PSBへのメッセージの末尾に付けられる一意の番号。この番号は、リカバリ可能メッセージを解放するためのpams_confirm_msg関数に対する入力です。
|
|
|
|
配信不可メッセージ・アクション(UMA)の完了ステータス。PSB UMAステータスは、UMAが実行されなかったか、または適用されたかを示します。
|
|
|
|
Oracle MessageQ関数の実行が完了した後に、Oracle MessageQソフトウェアによってこのフィールドに戻り値が書き込まれます。
|
|
|
|
|
show_buffer
Oracle MessageQがメッセージ・ヘッダーから抽出する追加情報を受け取ります。
show_buffer引数の構造は次のとおりです。
表2-45 show_buffer引数
|
|
|
|
|
show_buffer構造体のバージョン。有効なシンボルは次のとおりです。10 = Version 1.0
|
|
|
アプリケーションのバッファへのshow_buffer情報の転送に関連するステータス・コード。有効なシンボルは次のとおりです。
PAMS__SUCCESS-使用可能なすべての情報が転送されました。
PAMS__BUFFEROVF-受信側バッファのオーバーフローにより情報が失われました。0-戻されたメッセージはありません。転送する情報はありません。
|
|
|
|
|
|
show_bufferの各フィールドのステータスを示すビット配列。設定されたビットは有効なフィールドを示し、クリアされたビットは不確定データまたは割り当てられたshow_bufferメモリーの終わりを示します。flagsフィールドのシンボルは次のとおりです。
PSYM_SHOW_VERSION PSYM_SHOW_STATUS PSYM_SHOW_SIZE PSYM_SHOW_FLAGS PSYM_SHOW_TARGET PSYM_SHOW_ORIGINAL_TARGET PSYM_SHOW_SOURCE PSYM_SHOW_ORIGINAL_SOURCE PSYM_SHOW_DELIVERY PSYM_SHOW_PRIORITY PSYM_SHOW_ENDIAN PSYM_SHOW_CORRELATION_ID
|
|
|
制御セクションをその最大の24バイトまで満たします。
|
|
|
制御セクションをその最大の24バイトまで満たします。
|
|
|
制御セクションをその最大の24バイトまで満たします。
|
|
|
制御セクションをその最大の24バイトまで満たします。
|
|
|
制御セクションをその最大の24バイトまで満たします。
|
|
|
制御セクションをその最大の24バイトまで満たします。
|
|
|
最新のメッセージ・ターゲットのq_address。
|
|
|
|
|
|
|
|
|
|
|
|
メッセージをキューイングするために使用された配信モード。
|
|
|
メッセージをキューイングするために使用された優先度。
|
|
|
PSYM_VAX_BYTE_ORDER または PSYM_LITTLE_ENDIAN PSYM_NETWORK_BYTE_ORDER または PSYM_BIG_ENDIAN PSYM_FML
|
|
|
メッセージに関連付けられた32バイトの相関識別子。
|
show_buff_len
show_buffer引数で定義されたバッファの長さ(バイト単位)を指定します。最小の長さは40バイトです。バッファのサイズが小さすぎてすべての情報が入らない場合は、戻りコードPAMS__BUFFEROVFが
show_buffer転送ステータスに含められます。
large_area_len
32Kより大きいメッセージを受信するためのメッセージ領域のサイズを指定します。二重バッファ(PSYM_MSG_BUFFER_POINTERで示す)を使用する場合は、メッセージ・バッファの長さも指定します。この引数には、再割当て後の二重バッファおよびFML32バッファの長さも格納されます。
large_size
メッセージ・バッファに書き込まれたラージ・メッセージ、二重バッファ・メッセージまたはFMLメッセージの実際のサイズを戻します。
nullarg_3
プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。
戻りコード
表2-46 戻りコード
|
|
|
|
|
受信したメッセージがアプリケーションのメッセージ領域より大きくなっています。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
show_buffer引数用に指定されたサイズが小さすぎます。
|
|
|
使用可能なメッセージ・ブロックがこれ以上ありません。
|
|
|
FMLメッセージの内部フォーマットで問題が検出されました。処理のエラーまたはデータ破壊の可能性があります。
|
|
|
メッセージ・バッファを正しくキューイングできませんでした。
|
|
|
msg_area_len引数は、正またはゼロにする必要があります。
|
|
|
|
|
|
FML32バッファを受信しましたが、 msg_area_len引数がPSYM_MSG_BUFFER_PTRに設定されていません。
|
|
|
ネットワーク・エラーにより通信リンクが中断しました。
|
|
|
リソースにアクセスできません。ACLチェックに失敗しました。
|
|
|
|
|
|
バッファ・ポインタを再度割り当てるためのメモリー・リソースが不足しています。
|
|
|
アクセスを許可するためのマルチリーダー・キュー・リソースが不足しています。
|
|
|
プロセスは、Oracle MessageQにアタッチされていません。
|
|
|
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
|
|
|
メッセージ・バッファを正しく読み取ることができませんでした。
|
|
|
リソースは無効になっており、ユーザーが解放する必要があります。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
|
関連項目
-
pams_get_msga
-
pams_put_msg
-
pams_set_select
例
メッセージが読み取られるまでブロック
この例は、pams_get_msgw関数の使用方法を示しています。これは、メッセージを5秒ごとにそれ自体に送信するためのアラームを設定します。そのための待機にpams_get_msgwを使用します。queue_1という名前のキューが、初期化ファイルでプライマリ・キューとして定義されている必要があります。完全なコードの例x_getw.cは、examplesディレクトリ内にあります。
pams_locate_q
指定されたキュー名またはキューのエイリアスに対応するキュー・アドレスを探します。デフォルトでは、この関数はキュー・アドレスが戻されるまで待機します。
構文
引数
引数の定義
q_name
キュー・アドレスをリクエストするキュー名またはキュー・エイリアスを指定します。Oracle MessageQがこの名前を見つけるために使用する手順は、次に説明する
name_space_list引数によって制御されます。
q_name_len
q_name引数の文字数を指定します。UNIX、Windows NTおよびOpenVMS上での文字列の最大の長さは255文字です。その他のすべてのOracle MessageQ環境では、文字列の最大の長さは31です。
q_address
アプリケーションが正常にキュー名を見つけたとき、Oracle MessageQによって割り当てられたキュー・アドレスを受け取ります。
wait_mode
pams_locate_q関数の検索モードを指定します。このモードは、アプリケーションで検索の完了を待機するか、確認応答メッセージのレスポンスを受信するかを指定します。この引数には次の2つの事前定義済の定数があります。
PSYM_WF_RESP (デフォルトの設定)-アプリケーションでは、pams_locate_qのリクエストを発行し、キュー・アドレスが戻されるまで待機します。
PSYM_AK_RESP-アプリケーションではpams_locate_q addressを発行し、処理を続行します。検索が完了すると、アプリケーションのプライマリ・キューのLOCATE_Q_REPメッセージでキュー・アドレスがアプリケーションのプライマリ・キューに戻されます。レスポンス・メッセージは、
resp_q引数を使用して別のキュー・アドレスにリダイレクトできます。
req_id
アプリケーション固有のトランザクションIDを指定し、pams_locate_q関数と関連付けます。
resp_q
q_addressの確認応答メッセージの受信に使用する別のキューを指定します。レスポンス・キューが指定されない場合、確認応答メッセージは送信元プログラムのプライマリ・キューに送信されます。
resp_q引数の形式は次のとおりです。
送信元プログラムではそのグループ外のレスポンス・キューを指定できないため、グループIDフィールドは常にゼロとなることに注意してください。
name_space_list
name_space_list引数を指定する場合は、
name_space_list_len引数も指定する必要があります。この引数を指定しない場合は、PSEL_TBL_GRPがデフォルトとなります。
name_space_list引数に指定できる値は次のとおりです。
表2-48 name_space_list引数
|
|
|
|
|
|
|
PSEL_TBL_BUS (またはPSEL_TBL_BUS_MEDIUMまたはPSEL_TBL_BUS_LOW)
|
name_space_list引数は、次のように名前の範囲を識別します。
- ローカルのキュー参照またはキューを識別するには、アプリケーションではname_space_listにPSEL_TBL_GRPが含まれている必要があります。(PSEL_TBL_BUSはグローバル・キュー参照を識別するため、リスト内でこれを指定しないでください。)
- グローバル・キュー参照を識別するには、name_space_list引数にPSEL_TBL_BUS (またはPSEL_TBL_BUS_MEDIUMまたはPSEL_TBL_BUS_LOW)を含め、そのパス名を明示的または暗黙的に指定する必要があります。q_name引数にスラッシュ(/)またはピリオド(.)が1つでも含まれている場合、Oracle MessageQはこれをパス名として扱います。それ以外の場合、Oracle MessageQはq_nameを名前として扱い、名前にDEFAULT_NAMESPACE_PATHを追加して、ルックアップするパス名を作成します。(DEFAULT_NAMESPACE_PATHは、グループ初期化ファイルの%PROFILEセクションで設定されています。)
name_space_list引数も、次のようにキャッシュ・アクセスを制御します。
- ローカル・キューの参照またはキュー名をルックアップするには、PSEL_TBL_GRPとPSEL_TBL_PROCの両方を指定します。これにより、グループ・キャッシュを検索する前にプロセス・キャッシュがチェックされます。
- グローバル・キューの参照をルックアップするには、PSEL_TBL_BUS (またはPSEL_TBL_BUS_LOWまたはPSEL_TBL_BUS_MEDIUM)、PSEL_TBL_GRPおよびPSEL_TBL_PROCを指定します。これにより、プロセス・キャッシュがチェックされます。そして、グローバル・ネームスペースを検索する前にグループ・キャッシュがチェックされます。
マスター・データベースを検索する前に、グローバル・ネームスペース内のすべてのキャッシュをルックアップするには、PSEL_TBL_BUSのかわりにPSEL_TBL_BUS_LOWを指定する点に注意してください。
マスター・データベースを検索する前に、速度は遅くても最新のグローバル・ネームスペース内のキャッシュをルックアップするときにのみ、PSEL_TBL_BUSのかわりにPSEL_TBL_BUS_MEDIUMを指定します。
キュー・アドレスの動的バインディングの詳細は、「ネーミングの使用」のトピックを参照してください。
name_space_list_len
name_space_list引数のエントリの数を指定します。
name_space_list_len引数がゼロの場合、デフォルトとして、Oracle MessageQは
name_space_list引数でPSEL_TBL_GRPを使用します。
timeout
検索の完了に許容するPAMSの時間単位数(1/10秒間隔)を指定します。timeoutが0である場合、グループのATTACH_TMOプロパティが使用されます。ATTACH_TMOもゼロである場合は、600が使用されます。
戻り値
表2-49 戻りコード
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DMQ_BUS_ID環境変数が設定されていません。
|
|
|
DMQ_GROUP_ID環境変数が設定されていません。
|
|
|
ネットワーク・エラーにより通信リンクが中断しました。
|
|
|
指定された名前のアドレスが0であるか、別のグループに存在します。
|
|
|
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
リクエストされたキューは、PAMS_bind_q requestからのアンバインドの処理中です。
|
関連項目
例
キュー・アドレスを探す
この例は、queue_1をアタッチしてメッセージが送信されるqueue_3を探すことで、pams_locate_q関数の使用方法を示しています。queue_1およびqueue_3という名前のキューが、初期化ファイルでプライマリ・キューとして定義されている必要があり、queue_1がプライマリ・キューである必要があります。完全なコードの例x_locate.cは、examplesディレクトリ内にあります。
pams_open_jrn
選択されたメッセージ・リカバリ・ジャーナルを開きます。Oracle MessageQの使用不能のレター・ジャーナル(DLJ)には、リカバリ・システムにより配信できなかったリカバリ可能と指定されたメッセージが格納されます。Oracle MessageQ事後確認ジャーナル(PCJ)には、正常に配信されたリカバリ可能メッセージが格納されます。Oracle MessageQメッセージ・リカバリ・サービスの詳細は、「リカバリ可能メッセージングの使用」のトピックを参照してください。
構文
引数
引数の定義
jrn_filespec
格納されたメッセージをアプリケーションが読み取る、メッセージ・リカバリ・ジャーナルの名前を指定します。
注意: |
jrn_filespec は、<group name><queue name>.< SAF/DQF/ACK/DLQ/PCJ> という形式を使用する必要があります。グループ名の長さは4で、キュー名の長さは8です。 |
jrn_filename_len
指定された
jrn_filespec引数(ファイル名配列)に入力されるファイル指定の長さをバイト数で指定します。
jrn_handle
この関数が正常に完了した場合に、選択されたメッセージ・リカバリ・ファイルのジャーナル・ハンドルを受け取ります。
注意: |
jrn_filespec は、<group name><queue name>.< SAF/DQF/ACK/DLQ/PCJ> という形式を使用します。グループ名の長さは4で、キュー名の長さは8です。
ジャーナル・キューは、ある時点でジャーナル・キューを開く、または読み取る1つのアプリケーションのみによってロックされます。アプリケーションがジャーナル・キューを開こうとするときに、これは最初に一時キューをセカンダリ・キューとしてアタッチしようと試みます。キュー・プールに十分な数の一時キューが残っていない場合、ジャーナル・キューは開かれません。一時キューの数はキュー・スペースの作成時に定義でき、デフォルト値は200 です。 |
戻り値
表2-51 戻りコード
|
|
|
|
|
|
|
|
|
|
|
指定されたジャーナル・キューを開こうとしたときにエラーが発生しました。
|
|
|
|
関連項目
-
pams_close_jrn
-
pams_confirm_msg
-
pams_put_msg
-
pams_read_jrn
pams_put_msg
標準のOracle MessageQ配信モードを使用して、メッセージをターゲット・キューに送信します。アプリケーションでは、msg_size引数を使用して、バッファ方式またはFML方式のメッセージングを指定します。最大32Kのメッセージ・バッファを使用するバッファ方式メッセージングの場合、この引数はユーザーのmsg_areaバッファ内のメッセージの長さをバイト単位で指定します。さらに、msg_size引数を使用して次のいずれかのシンボルを指定できます。
- PSYM_MSG_FML-FML方式のメッセージングを示します。msg_area引数には、FML32バッファへのポインタが含まれている必要があります。
- PSYM_MSG_LARGE-バッファ方式のメッセージを示し、メッセージの長さは4MBまでとなります。バッファへのポインタはmsg_area引数に含まれ、ラージ・メッセージ・バッファのサイズはlarge_size引数に含まれます。
pams_put_msg関数のdelivery引数は、システム、プロセスまたはネットワーク障害時のメッセージ配信の保証に使用できます。リカバリ可能メッセージは、受信側プログラムのターゲット・キューに配信できるまで、メッセージ・リカバリ・システムによってディスクに格納されています。リカバリ可能メッセージを送信するときは、メッセージ・リカバリがメッセージを格納できない場合のuma引数を指定する必要があります。また、操作の戻りステータスを受信するため、psb引数も指定する必要があります。
オプションのtimeout引数により、関数がタイムアウトするまでの、送信操作完了のための最大時間を設定できます。オプションのresp_q引数により、レスポンスを送信側プログラムのプライマリ・キューに送るかわりに、レスポンス・メッセージを受信するための代替キューを指定できます。
メッセージの送信時にFML32バッファへのポインタを使用するために、送信側プログラムではシンボルPSYM_MSG_FMLをpams_put_msg関数に対するmsg_size引数として指定します。
構文
引数
引数の定義
msg_area
バッファ方式メッセージングの場合、受信側プログラムのターゲット・キューに配信されるメッセージが含まれるメモリー・リージョンのアドレスまたはメッセージ・ポインタを指定します。FML方式メッセージングの場合、メッセージが含まれるFML32バッファをポイントするメッセージ・ポインタを指定します。
priority
選択的なメッセージ受信のための優先度のレベルを指定します。優先度の範囲は、0(低優先度)-99(高優先度)です。
target
受信側プログラムのキュー・アドレスのキュー番号およびグループIDを次の形式で指定します。
class
送信されるメッセージのクラス・コードを指定します。Oracle MessageQでは、
class引数の値にシンボリック名が使用できます。シンボリックなクラス名はMSG_CLAS_で始まります。クラス・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。UNIXおよびNTシステムでは、p_typecl.hインクルード・ファイルは編集できません。アプリケーションで使用するタイプおよびクラスのシンボルを定義するインクルード・ファイルを作成する必要があります。
Oracle MessageQで予約されているクラス・シンボルは次のとおりです。
表2-53 クラス・シンボル
|
|
|
|
|
|
|
|
|
|
|
|
MSG_CLAS_TUXEDO_TPSUCCESS
|
|
|
|
|
30000から32767 (31001-31003を除く)
|
type
送信されるメッセージのタイプ・コードを指定します。Oracle MessageQでは、
type引数の値にシンボリック名が使用できます。シンボリックなタイプ名はMSG_TYPE_で始まります。タイプ・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。
シンボルの値の範囲の-1から-5000はOracle MessageQで予約されています。この引数の値がゼロの場合は、メッセージ・タイプによる処理は行われません。
delivery
次の形式を使用してメッセージの配信モードを指定します。
- PDEL_MODE_sn_dip-snは、次に示す送信側通知定数のうちの1つです。
- WF - 完了の待機
- AK - 非同期確認応答
- NN - 非通知
dipは、次に示す配信インタレスト・ポイント定数のうちの1つです。
- ACK - ターゲット・キューから読み取り、pams_confirm_msg関数を使用して明示的に確認された。ACKは、受信側アプリケーションによる2番目のpams_get_msgの呼出しの後に送信される暗黙的な確認応答である場合もあります。
- CONF - DQFから配信され、pams_confirm_msg関数を使用して明示的に確認された(リカバリ可能)。
- DEQ - ターゲット・キューから読み取られた。
- DQF - 宛先のキュー・ファイルに格納された(リカバリ可能)。
- MEM - ターゲット・キューに格納された。
- SAF - ストア・アンド・フォワード・ファイルに格納された(リカバリ可能)。
注意: |
一時キューを使用していて、迅速な削除と再使用が行われる場合、まれな例として、以前の一時キューからの暗黙的なACKレスポンスが新規の一時キューに格納されることがあります。 |
msg_size
最大32Kのメッセージ・バッファを使用するバッファ方式メッセージングの場合、この引数はユーザーの
msg_areaバッファ内のメッセージの長さをバイト単位で指定します。さらに、次のいずれかのシンボルを指定できます。
- PSYM_MSG_FML - FML方式のメッセージングを示します。msg_area引数には、FML32バッファへのポインタが含まれている必要があります。
- PSYM_MSG_LARGE - バッファ方式のメッセージングを示し、メッセージの長さは4MBまでとなります。バッファへのポインタはmsg_area引数に含まれ、ラージ・メッセージ・バッファのサイズはlarge_size引数に含まれます。
timeout
アプリケーションに制御を戻す前にpams_put_msg関数がメッセージの到着を待機する時間の最大値を指定します。タイムアウト値は、1/10 (0.1)秒単位で入力します。値100は、10秒のタイムアウトを示します。メッセージが届く前にタイムアウトが発生した場合、ステータス・コードPAMS__TIMEOUTが戻されます。timeoutの値に0を指定すると、タイムアウトはデフォルト値の30秒に設定されます。
psb
最終的な完了ステータスを示すPAMSのステータス・ブロックの値を受け取ります。
psb引数は、リカバリ可能メッセージの送受信時に使用されます。PSB構造体には、メッセージ・リカバリ・システムからのステータス情報が格納され、メッセージの送受信の後にチェックできます。
PSBの構造は、次のとおりです。
表2-54 PSB構造体
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
関数の完了ステータス。これには、MRSからのステータスが含まれます。また、メッセージがリカバリ可能な状態で送信されなかった場合には、値PAMS__SUCCESSが含まれる可能性があります。
|
|
|
|
メッセージが送信されるときにそのメッセージに割り当てられ、宛先PSBへのメッセージの末尾に付けられる一意の番号。この番号は、リカバリ可能メッセージを解放するためのpams_confirm_msg関数に対する入力です。
|
|
|
|
配信不可メッセージ・アクション(UMA)の完了ステータス。PSB UMAステータスは、UMAが実行されなかったか、または適用されたかを示します。
|
|
|
|
Oracle MessageQ関数の実行が完了した後に、Oracle MessageQソフトウェアによってこのフィールドに戻り値が書き込まれます。
|
|
|
|
|
uma
指定した配信インタレスト・ポイントでメッセージが格納できなかった場合に実行されるアクションを指定します。この引数の形式は
PDEL_UMA_XXXで、この
XXXは次に示すシンボルのうちの1つです。
resp_q
受信側プログラムからのレスポンス・メッセージを受信するための代替キューに使用する
q_addressを指定します。送信側プログラムでは、レスポンス・メッセージを受信するため、
resp_q引数に指定したキューにアタッチする必要があります。
resp_q引数の形式は次のとおりです。
送信元プログラムではそのグループ外のレスポンス・キューを指定できないため、グループIDフィールドは常にゼロとして指定されます。
large_size
メッセージ・バッファに書き込まれたラージ・メッセージの実際のサイズを指定します。
correlation_id
相関識別子(32バイトの値として格納されるユーザー定義の識別子)を指定します。
nullarg_3
プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。
戻り値
表2-56 戻りコード
|
|
|
|
|
|
|
|
|
|
|
|
|
|
グループ間通信が無効化されている場合に、グループ間接続の使用を試みます。OpenVMSシステムでは、無効なNULL呼出し引数です。
|
|
|
|
|
|
無効なターゲット・キュー・アドレスが指定されました。
|
|
|
レスポンス・キューがプロセスの所有ではありません。
|
|
|
|
|
|
配信不可メッセージ・アクション(UMA)が無効です。
|
|
|
ターゲットのプロセス割当てが超過しました。メッセージは送信されませんでした。
|
|
|
使用可能なメッセージ・ブロックがこれ以上ありません。
|
|
|
FMLメッセージの内部フォーマットで問題が検出されました。処理のエラーまたはデータ破壊の可能性があります。
|
|
|
|
|
|
メッセージは、リンク・リスト・セクション(LLS)の最大サイズを超過しました。
|
|
|
引数リストで指定された無効な(負の) msg_sizeです。
|
|
|
ネットワーク・エラーにより通信リンクが中断しました。
|
|
|
|
|
|
ターゲット・プロセスが現在アクティブではありません。メッセージは送信されません。
|
|
|
プロセスは、Oracle MessageQにアタッチされていません。
|
|
|
指定されたバッファはFML32バッファではありません。
|
|
|
選択された配信モードとumaの組合せがサポートされていません。
|
|
|
|
|
|
|
|
|
メッセージ・バッファを正しくデキューできませんでした。
|
|
|
|
|
|
|
|
|
|
|
|
アタッチされていないキューにメッセージが正常に送信されました。
|
|
|
ターゲット・プロセスのウェイクアップに失敗しました。
|
表2-57 UMAステータス
|
|
|
|
|
メッセージを宛先キュー・ファイル(DQF)内でリカバリできません。配信不可メッセージ・アクション(UMA)はPDEL_UMA_DISCでした。メッセージを破棄できませんでした。
|
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DISCでした。メッセージが破棄されました。
|
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DISCでした。リカバリ能力の障害をログに記録できなかったか、メッセージを破棄できませんでした。
|
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DISCでした。リカバリ能力の障害がログに記録された後にメッセージが破棄されました。
|
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLJでした。使用不能のレター・ジャーナル(DLJ)の書込み操作が失敗しました。
|
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLJでした。メッセージがDLJに書き込まれました。
|
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLQでした。メッセージをDLQにキューイングできませんでした。
|
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLQでした。メッセージはDLQにキューイングされました。
|
|
|
メッセージはリカバリ可能です。UMAは実行されませんでした。
|
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_RTSでした。メッセージを送信元に戻すことができませんでした。
|
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_RTSでした。メッセージが戻されました。
|
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_SAFでした。ストア・アンド・フォワード(SAF)の書込み操作が失敗しました。
|
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_SAFでした。メッセージはSAFファイルからリカバリ可能です。
|
|
|
|
関連項目
-
pams_get_msg
-
pams_get_msga
-
pams_get_msgw
例
メッセージの送信
この例では、多数のメッセージをキューに送信します。完全なコードの例x_putslf.cは、examplesディレクトリ内にあります。
pams_read_jrn
Oracle MessageQジャーナル・ファイルからメッセージを読み取ります。pams_open_jrn関数を使用して、メッセージ・キューイング・グループの使用不能のレター・ジャーナルまたは事後確認ジャーナルを開きます。pams_close_jrn関数を使用して、選択したメッセージを読み取った後にジャーナル・ファイルを閉じます。UNIXおよびWindows NTシステムでは、これらの関数はJournal Replayユーティリティを実行することによって実行されることに注意してください。
受信側プログラムは、len_data引数を読み取ることにより、各メッセージがFMLバッファであるか、またはラージ・メッセージであるかを判断します。メッセージ・ハンドルおよびラージ・メッセージの操作の詳細は、「Oracle MessageQメッセージの送受信」のトピックを参照してください。
構文
引数
引数の定義
jrn_handle
アプリケーションがジャーナル・エントリを読み取ることを選択したメッセージ・リカバリ・ジャーナルのジャーナル・ハンドルを指定します。ジャーナル・ハンドルは、pams_open_jrn関数によりアプリケーションに戻されます。
msg_area
選択したメッセージ・リカバリ・ジャーナルから取得したメッセージのコンテンツを受け取ります。この引数には、Oracle MessageQの書込み先のメモリー・リージョンのアドレスまたはメッセージ・ハンドルのいずれかが含められます。
priority
選択的なメッセージ受信のための優先度のレベルを指定します。優先度の範囲は、0(低優先度)-99(高優先度)です。
source
送信側プログラムのプライマリ・キューのキュー番号とグループIDを識別する構造体を、次の形式で受け取ります。
class
取得されたメッセージのクラス・コードを受け取ります。クラスは、pams_put_msg関数の引数に指定されます。Oracle MessageQでは、
class引数の値にシンボリック名が使用できます。シンボリックなクラス名はMSG_CLAS_で始まります。クラス・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。Oracle MessageQで予約されているクラス・シンボルは次のとおりです。
表2-59 クラス・シンボル
|
|
|
|
|
|
|
|
|
|
|
|
MSG_CLAS_TUXEDO_TPSUCCESS
|
|
|
|
|
30000から32767 (31001-31003を除く)
|
type
ジャーナリングされたメッセージのタイプ・コードを受け取ります。タイプは、pams_put_msg関数の引数に指定されます。Oracle MessageQでは、
type引数の値にシンボリック名が使用できます。シンボリックなタイプ名はMSG_TYPE_で始まります。タイプ・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。OpenVMSシンボル値の範囲は、-1から-5000です。
type引数を使用することで、選択的なメッセージの受信が容易になります。ただし、受信側アプリケーションでその処理に特定の値を必要としない場合は、値0を使用します。
msg_area_len
最大32Kバイトのバッファ方式メッセージのバッファ・サイズを指定します(バイト単位)。
msg_areaバッファは、取得されたメッセージの格納に使用されます。
len_data
- 最大32Kのメッセージを扱うバッファ方式のメッセージングの場合、この引数はメッセージ・キューから取得され、msg_area引数により指定された領域に格納されたバイト数を受け取ります。
- FML方式のメッセージの場合、この引数にはシンボルPSYM_MSG_BUFFER_PTRが含まれ、メッセージがFML32バッファへのポインタであることが示されます。
- ラージ・メッセージの場合、この引数にはシンボルPSYM_MSG_LARGEが含まれ、メッセージ・バッファが32Kより大きいことが示されます。メッセージのサイズは、large_size引数で戻されます。
target
受信側のキュー・アドレスのキュー番号およびグループIDを次の形式で受け取ります。
write_time
リカバリ可能メッセージが確認された日時を指定するクアッドワード(2つのint32値の配列)のアドレスを受け取ります。このパラメータは、標準のOpenVMSシステム時間を使用します。
conf_val
msg_seq_num
Oracle MessageQにより生成されたメッセージ順序番号を、受信されたメッセージのPSBで受け取ります。この引数は、PSB内の値に設定する必要があります。
mrs_status
メッセージのメッセージ・リカバリ・サービス(MRS)ステータスを受け取ります。
large_area_len
32Kより大きいメッセージを受信するためのメッセージ・バッファのサイズを指定します。
large_size
メッセージ・バッファに書き込まれたラージ・メッセージの実際のサイズを戻します。
nullarg_3
プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。
戻り値
表2-60 戻りコード
|
|
|
|
|
受信したメッセージがユーザーのメッセージ領域より大きくなっています。
|
|
|
|
|
|
|
|
|
|
|
|
ジャーナル・ファイル内のメッセージが、GROUP_MAX_MESSAGE_SIZEより大きくなっています。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
qspaceが使用不可であるため、すべてqspaceにアクセスできません。
|
|
|
このエラー・コードは、いずれかのタイムアウトが発生したことを示します。
|
|
|
無効または削除されたキューの名前が指定されています。
|
関連項目
-
pams_close_jrn
-
pams_open_jrn
pams_set_select
アプリケーションの開発者が、メッセージを受け取るための複雑な選択基準を定義できます。選択配列により、キューに対して、メッセージ受信の優先度、範囲チェックのための2つの比較キー、およびメッセージがキューから選択される順序を決定する順序キーによる検索を指定します。
pams_set_select関数は、メッセージ読取り用のOracle MessageQ関数のsel_filter引数として使用されるインデックス・ハンドルを作成します。選択インデックス・ハンドルがpams_get_msg、pams_get_msgaまたはpams_get_msgwに渡されると、受信された各メッセージは比較key_1に対して比較され、次に、比較key_2に対して比較されます。メッセージが両方のキーと一致する場合(論理的なAND操作)、そのメッセージは一致メッセージのセットに追加されます。選択されたメッセージが配信される順序は、順序キーによって決定されます。
構文
引数
表2-61 引数
|
|
|
|
|
|
selection_array_ component
|
|
selection_array_ component *
|
|
|
|
|
|
|
|
|
|
|
|
引数の定義
selection_array
各キューの選択ルールを格納した選択レコードの配列を指定します。この選択配列用に、C言語のデータ構造体がtypedefで型定義されています。この構造体は、次のようにp_entry.hで定義されています。
selection_array_componentデータ構造体には次のようなコンポーネントがあります。
表2-62 selection_array_componentデータ構造体
|
|
|
アプリケーションで、キュー番号と優先度を指定できます。
|
|
メッセージの有効範囲のチェックに使用する、1番目の比較キーのコンポーネントを定義します。
|
|
メッセージの有効範囲のチェックに使用する、2番目の比較キーのコンポーネントを定義します。
|
|
FIFO、最小値または最大値によるメッセージの選択を可能にするために必要な情報を格納します。
|
次の表では、selection_array_componentデータ構造体の各コンポーネントの内容を定義しています。
キューおよび優先度
次の表に、Select_Queue構造体のこの部分の引数に適用できる有効な値を示します。
表2-63 Select_Queue構造体
|
|
|
|
|
検索するキュー番号を指定します。キュー番号は、アプリケーションが読取りアクセスを持つ任意のメッセージ・キューにできます。キュー番号は、pams_attach_q関数の q_attached引数、またはpams_locate_q関数の q_addressから取得できます。この引数の値0は、アプリケーションのプライマリ・キューを指定します。
|
|
|
両端の数を含めて0から99の整数値、または変数のいずれかで優先度を指定します。(直接的な整数値の使用は、優先度を指定する際によく使われる方法です。)アプリケーションでは、この引数に、次に示す事前定義済の定数を設定することもできます。
|
|
|
優先度0のメッセージの前に、優先度1のメッセージを読み取ります。
|
|
|
|
|
|
|
比較キー
次の表に、Selection_Array_Components構造体のこの部分に適用できる引数および有効な値を示します。
表2-64 Selection_Array_Components構造体
|
|
|
|
|
メッセージ内のどこから比較を開始するかを指定する値を格納します。次に示す事前定義済の定数が使用できます。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
メッセージの相関識別子。key_1_offsetまたはkey_2_offsetに使用できますが、両方には指定できません。このシンボルが指定された場合、SizeフィールドをPSEL_CORRELATION_ID_SIZE (または32バイト)に設定する必要があります。
|
|
|
PAMSステータス・バッファから取得したメッセージの順序番号。このシンボルが指定された場合、SizeフィールドをPSEL_SEQUENCE_NUMBER_SIZE (または8バイト)に設定する必要があります。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PSEL_SEQUENCE_NUMBER_SIZE
|
|
|
|
|
|
|
32ビットの整数値の形式で、メッセージ・フィールドの比較フィールドの値を格納します。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
順序キー
Order Keyの部分には、次の表に示す変数を格納します。
表2-65 順序キー
|
|
|
|
|
メッセージ・フィールドのバイト・オフセット。この オフセット変数には、メッセージ内のどこから比較を開始するかを指定する値を格納します。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
メッセージの相関識別子。このシンボルが指定された場合、SizeフィールドをPSEL_CORRELATION_ID_SIZE (または32バイト)に設定する必要があります。
|
|
|
PAMSステータス・バッファから取得したメッセージの順序番号。このシンボルが指定された場合、SizeフィールドをPSEL_SEQUENCE_NUMBER_SIZE (または8バイト)に設定する必要があります。
|
|
|
比較するサイズ。 サイズの変数は、比較されるキーのデータ型を指定します。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PSEL_SEQUENCE_NUMBER_SIZE
|
|
|
|
|
|
|
順序の演算子。この 順序の変数は、選択処理が実行される順序を指定します。
|
|
|
|
|
|
|
|
|
|
相関識別子
相関識別子は、メッセージに関連付けられた32バイトのユーザー定義の識別子です。key_1_offsetまたはkey_2_offsetフィールドのいずれかの値としてPSEL_CORRELATION_IDが指定された場合、指定された相関識別子の値がメッセージとの一致のチェックに使用されます。相関識別子は各メッセージに1つであるため、PSEL_CORRELATION_IDは比較キーの1つのみに指定できます。両方のキーに相関識別子を指定すると、PAMS__BADPARAMエラーが発生します。
PSEL_CORRELATION_IDがorder_offsetフィールドの値として指定されると、その相関識別子を持つメッセージは、order_orderフィールドで指定された順序で戻されます。
順序番号
メッセージの順序番号は各メッセージごとに一意の値です。順序番号はPAMSステータス・バッファ(PSB)に格納されています。アプリケーションでは、メッセージの順序番号をPSBから取得する必要があり、それに対するどのような変更も許されません。
注意: |
アプリケーションでは、相関識別子または順序番号による選択のため、2つのキーのうちの1つのみを指定できます。 |
num_masks
選択配列のレコード数を指定します。この引数では、選択配列の最小1レコードから最大256レコードまでが指定できます。
index_handle
次に示すように、選択マスクのためのインデックス・ハンドルが格納されている変数を受け取ります。
- PSEL_BY_MASKを含む上位のワード。
- 選択配列へのインデックスを含む下位のワード。
index_handleは、
sel_filter引数としてpams_get_msg、pams_get_msgaまたはpams_get_msgw、およびpams_cancel_select関数に渡されます。OpenVMSでは、最大500個のインデックス・ハンドルが許可されます。その他のOracle MessageQ実装では、16Kから32Kのインデックス・ハンドルが提供されます。
戻り値
表2-66 戻りコード
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ネットワーク・エラーにより通信リンクが中断しました。
|
|
|
プロセスは、Oracle MessageQにアタッチされていません。
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
|
関連項目
-
pams_cancel_get
-
pams_cancel_select
-
pams_get_msg
-
pams_get_msga
-
pams_get_msgw
例
複合的な選択フィルタを使用したメッセージの選択
この例では、複合的なメッセージ選択フィルタを構築するためにpams_set_selectを使用したメッセージの選択的な受信を示しています。queue_1という名前のキューが、初期化ファイルでプライマリ・キューとして定義されている必要があります。完全なコードの例x_select.cは、examplesディレクトリ内にあります。
pams_set_timer
時間間隔が超過した場合やある時刻に達した場合にメッセージをアプリケーションのプライマリ・キューに送信するタイマーを作成します。メッセージは、ソースがPAMS__TIMER_QUEUE、クラス・コードがPAMS、タイプ・コードがTIMER_EXPIREDで、優先度1メッセージとして送信されます。この関数により、TIMER_EXPIREDメッセージの先頭のint32値としてtimer_idが戻されます。
注意: |
Oracle MessageQバージョン5.0より前では、有効な優先度値は0および1です。バージョン5.0では、有効な範囲は0から99です(0が最下位の優先度、99が最上位の優先度)。タイマーの優先度は常に1であるため、拡張された優先度範囲を利用するために既存のプログラムを変更する場合は、このことを考慮してください。タイマーに関連付けられたメッセージは優先度が1となり、優先度が2から99のすべてのメッセージが読み取られるまで送信されません。 |
タイマー・メッセージに対応するために、アプリケーションはpams_get_msgw関数を使用してそのプライマリ・キューを読み取り、タイマー期限切れメッセージが届くまでブロックして、それに対応します。Oracle MessageQタイマーを取り消すには、取り消すタイマーの識別コードとともにpams_cancel_timer関数を使用します。
構文
引数
引数の定義
timer_id
アプリケーションにより作成される一意のタイマー識別子値を指定します。0 (ゼロ)より大きくなるようにしてください。
timer_format
使用される時間形式を指定します。この引数には次の2つの事前定義済の定数があります。
P-
p_timeout引数に指定されたPAMSタイマー・フォーマットで、時間間隔を選択します。PAMSタイマー・フォーマットでは、時間を1/10秒単位で表現します。PAMSタイマー・フォーマットを使用することにより、オペレーティング・システム非依存の時間間隔の表現が可能になります。
S-
s_timeout引数に指定されたシステム依存時間形式を選択します。システム依存時間形式を使用することで、アプリケーションの特定のオペレーティング・システム環境への移植性が制限されます。
p_timeout
タイマー期限切れメッセージを戻すまでの、現在時刻からの遅延(差分)時間を指定します。
timer_format引数がPに設定されている場合、この引数には0より大きい値を入力する必要があります。この引数は、時間を1/10秒単位で表現するPAMSタイマー・フォーマットを使用します。
s_timeout
OpenVMSシステムでは、この引数を使用して、64ビットOpenVMS時間形式を設定するために使用される2つのint32値の配列へのポインタを指定します。
s_timeout引数は、OpenVMS時間形式ルールに合致する絶対時間または差分時間として指定できます。呼出し側がASTLMまたはTQELMプロセス割当てを超過すると、プロセスがRWAST状態に入る場合があることに注意してください。
UNIXおよびWindows NTシステムでは、この引数を使用して、int32値の2要素配列を指定します。この値は、タイマーが期限切れになる絶対時間(秒およびマイクロ秒でのUTC時間)を表します。
s_timeout引数を使用する場合、開発者は、
struct timeval theTime;
nStatus = pams_set_timer(&timer_id, "S", NULL, (int32 *) &theTime);
のようにstruct timevalへのポインタを指定します。
戻り値
表2-68 戻りコード
|
|
|
|
|
|
|
|
|
|
|
無効なタイマー番号がPAMS_set_timerに渡されました。
|
|
|
呼出し内で無効なタイマー・フォーマットが指定されました。PまたはSである必要があります。
|
|
|
ネットワーク・エラーにより通信リンクが中断しました。
|
|
|
プロセスは、Oracle MessageQにアタッチされていません。
|
|
|
S timer_formatは、UNIXおよびWindows NTシステム向けOracle MessageQではサポートされません。
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
|
|
|
|
関連項目
例
タイマーの設定
この例は、タイマーが5秒ごとに期限切れになるように設定することにより、Oracle MessageQタイマー関数の使用方法を示しています。タイマーは期限切れになると、それ自身にメッセージを送信します。タイマー・イベントを処理していない間は、他の受信メッセージを待機します。中断されると、すべての未処理のタイマーが取り消されます。queue_1という名前のキューが、初期化ファイルでプライマリ・キューとして定義されている必要があります。完全なコードの例x_timer.cは、examplesディレクトリ内にあります。
pams_status_text
ユーザー指定のPAMS API戻りコードの重大度レベルおよびテキスト説明を受け取り、この情報をユーザー指定の記憶領域に移動します。エラー・コードが不明である場合、エラーが戻され、呼出しパラメータには入力されません。
構文
引数
引数の定義
code
テキスト説明と重大度レベルが戻される対象の戻り値を指定します。
severity
メッセージの重大度レベルを示すコードを受け取ります。重大度レベルは、成功とエラーの両方のメッセージに適用されます。これらは、戻されるメッセージに関する追加情報を提供することを意図しています。この引数に戻される有効なコードは次のとおりです。
buffer
指定された戻りステータスのテキスト説明を受け取ります。
buflen
戻されるテキスト説明を格納するバッファの長さを指定します。すべての戻りステータス・コードのテキスト説明を格納するには、256バイトのバッファ長さが適しています。指定されたユーザー・バッファが十分大きい場合、文字列はゼロで終了します。バッファ長は、正の整数で入力する必要があります。この引数に負の整数値を指定すると、関数はステータスPAMS__BADPARAMを戻します。この引数をゼロに指定した場合、テキストはバッファに戻されず、関数はステータスPAMS__TRUNCATEDを戻します。
retlen
戻されたテキスト説明が入力されたユーザー指定バッファ領域のサイズを受け取ります。
説明
アプリケーション開発者は、pams_status_text関数を使用して各API戻り値のテキスト説明と重大度レベルを取得します。テキスト説明には、シンボリック名(インクルード・ファイルで定義され、このドキュメントで説明)と、これに続くカンマ、スペース、戻り値の説明が、次の形式で含まれます。
PAMS__SUCCESS, normal successful completion
テキスト説明に加え、この関数は成功およびエラーの両方のメッセージの重大度レベルを示すコードを戻します。
たとえば、pams_detach_qに対して可能性のある成功戻りコードには、PAMS-- SUCCESSとPAMS__DETACHEDの2つがあります。PAMS SUCCESS戻りコードは、指定されたキューが正常にデタッチされたことを示すために使用されます。
PAMS__DETACHEDは、呼出しが成功し、最後のキューがデタッチされ、pams_exit関数と同じ方法で事実上アプリケーションがメッセージ・キューイング・バスからデタッチされたことを示す、情報戻りコードです。
戻り値
putil_show_pending
選択されたキューのリストの保留中メッセージの数をリクエストします。putil_show_pending関数を使用するには、保留中のメッセージ数を取得するメッセージ・キューの番号、および保留中のメッセージ数を取得したいキュー・アドレスのリストを指定します。この関数の戻り値は、各メモリー・キューのメッセージの合計数です。OpenVMSシステムでは、この関数は選択されたキューへの配信に対してターゲット指定されたローカル・リカバリ・ジャーナル内の保留中メッセージの数も返します。
構文
引数
引数の定義
count
in_q_list引数内のキューのエントリ数を指定します(配列内のインデックスの数)。指定できる最大値は32,000です。
in_q_list
保留中のメッセージ数をリクエストするキュー番号を格納したint32値の配列を指定します。
out_pend_list
戻り値
表2-72 戻りコード
|
|
|
|
|
|
|
|
|
|
|
ネットワーク・エラーにより通信リンクが中断しました。
|
|
|
プロセスは、Oracle MessageQにアタッチされていません。
|
|
|
|
|
|
指定されたOracle MessageQグループは実行していません。
|
|
|
|
|
|
|
例
保留中メッセージの数を表示する
この例は、現在キュー内に存在する保留中メッセージの数を表示するためのputil_show_pendingの使用方法を示します。queue_1という名前のキューが、グループの構成時に定義されている必要があります。完全なコードの例x_shopnd.cは、examplesディレクトリ内にあります。
メッセージベース・サービスの使用
Oracle MessageQアプリケーションは、メッセージを送信する前に、キューの状態の確認やグループ間接続のステータスの確認などの標準タスクを定期的に実行します。これらのタスクを容易にするために、Oracle MessageQでは、アプリケーションとOracle MessageQサーバー・プロセスの間で交換される事前定義済リクエスト、通知およびレスポンス・メッセージのセットであるメッセージベースのサービスが提供されます。
表2-73に、メッセージベースのサービスを使用して実行される機能の説明と、使用可能なサーバーの一覧を示します。
表2-73 メッセージベース・サービスの概要
|
|
|
|
|
メッセージ・リカバリ・ファイルを管理する(OpenVMSシステムのみ)
|
メッセージをあるDQFファイルから別のDQFファイルに転送する(OpenVMSシステムのみ)
|
Oracle MessageQでは、メッセージベース・サービスを使用して、キュー・ステータスの取得などのルーチン・タスクを実行します。メッセージベース・サービスでは、2つのリクエスト-レスポンスの枠組みが使用されます。一部の種類のサービスでは、送信側プログラムは特定のメッセージを使用してリクエストをOracle MessageQサーバーに送信します。Oracle MessageQサーバーは、特定のメッセージのタイプおよび形式を使用して、メッセージでレスポンスを戻します。情報がリクエストされると、それはレスポンス・メッセージのメッセージ領域に戻されます。
また、送信側プログラムは、情報の更新を継続的に受信するように登録する場合があります。この場合、送信側プログラムは登録リクエストを送信し、登録リクエストが成功した場合にレスポンスを受信します。さらに、送信側プログラムは、リクエストしたとおりに最新の情報を提供するイベントドリブン・メッセージを受信します。イベントドリブン・メッセージの受信を停止するには、送信側プログラムは登録解除リクエストをOracle MessageQサーバーに送信する必要があります。
サービス・リクエストは、選択されたサービスを提供するように指定されたOracle MessageQサーバーのプライマリ・キューに送られます。Oracle MessageQのメッセージベース・サービス・リクエストは、Oracle MessageQアプリケーション・プログラミング・インタフェース(API)またはOracle MessageQスクリプトを使用してOracle MessageQサーバーに配信されます。同様に、アプリケーションは、レスポンスおよび通知のメッセージをそのプライマリ・キューまたはレスポンス・キューから読み取って、これらのメッセージを取得します。
Oracle MessageQのメッセージベース・サービスは、リクエスタとして機能するアプリケーション・プログラムと、リクエストを実行するOracle MessageQサーバー・プロセスの間で送信されます。メッセージがシステム間で正しく認識されるようにするには、リクエスタとサーバーの両方によって認識されるエンディアン形式でメッセージ・データが送受信される必要があります。
大部分のOracle MessageQメッセージベース・サービスでは、2つのシステムのエンディアン形式が異なる場合にはこの変換が自動的に実行されます。ただし、一部のメッセージベース・サービスでは、この変換が実行されません。この場合、ユーザー・アプリケーションがメッセージをサーバー・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。
Oracle MessageQが変換を実行するか、またはアプリケーションでハードウェア・データ・フォーマットの相違をチェックする必要があるかは、各メッセージの説明を参照してください。アプリケーションによってデータが適切にフォーマットされ、異なるベンダーのコンピュータ・システム間で標準メッセージを送信する場合に必要な変換が実行されるようにする方法の詳細は、「アプリケーションのビルドとテスト」のトピックを参照してください。
サービス・リクエスト・メッセージは、pams_put_msg
関数を使用して送信できます。リクエスト・メッセージは、type引数を使用してメッセージの目的を識別します。各リクエスト・メッセージには、事前定義済のデータ構造があります。
標準リクエスト・メッセージを送信するには、次を指定します。
「メッセージ・リファレンス」のトピックの各メッセージの詳細では、データ構造の各フィールドについて説明し、サンプルのCメッセージ構造を提供します。
レスポンスの受信
各Oracle MessageQサーバーは、サービス・リクエストに応答するためにレスポンスまたは通知のメッセージを戻します。大部分のリクエスト・メッセージには、レスポンス・メッセージがあります。さらに、一部のサービス・リクエストに対しては、Oracle MessageQサーバーは情報が使用可能になった場合にそれを送信元プログラムに提供する通知メッセージで応答します。
アプリケーションがpams_put_msg
関数を使用して情報をリクエストすると、それはOracle MessageQサーバーにレスポンスの送信先となるグループIDとキュー番号を提供します。次に、送信側プログラムはpams_get_msg
、pams_get_msgw
またはpams_get_msga関数を使用してこのキューを読み取り、レスポンス情報を取得します。
Oracle MessageQサーバーのレスポンスおよび通知メッセージには、次のことが示されます。
表2-74 Oracle MessageQサーバーのレスポンス
|
リクエストを実行するOracle MessageQサーバーのシンボリック名。
|
|
レスポンスのクラス・コードは常にPAMSであり、これがOracle MessageQのメッセージベース・サービスであることを示しています。
|
|
受信したメッセージのタイプ・コード。たとえば、AVAIL_REG_REPLY。
|
|
リクエストされた情報をレスポンスまたは通知メッセージで提供するために使用される事前定義済データ構造。Oracle MessageQのすべてのメッセージベース・サービス・メッセージの定義は、現在p_msg.hインクルード・ファイルで提供されています。
|
「メッセージ・リファレンス」のトピックの各メッセージの詳細では、データ構造の各フィールドについて説明し、サンプルのCメッセージ構造を提供します。
キューのステータスの取得
Oracle MessageQのメッセージベース・サービスにより、アプリケーションは特定のキューがメッセージの受信に使用可能であるかどうかのチェックが可能になります。この一連のメッセージは、ローカルまたはリモート・グループのすべてのアクティブなキューのステータスに関する情報を戻します。
特定のキューのステータスに関する情報を取得するために、アプリケーションは次のメッセージをAvailサーバーと交換します。
アプリケーション・プログラムは、ローカルのAvailサーバー・プロセスにAVAIL_REGタイプのメッセージを送信して、可用性メッセージの受信を登録します。Availサーバーは、AVAIL_REG_REPLYタイプのメッセージで応答し、通知リクエストに対して確認応答を行います。
登録後に、リクエスタはすぐにターゲット・キューの現在の可用性を示すAVAILまたはUNAVAILメッセージを受信します。キューの可用性メッセージは、特定のキューがアタッチされたりデタッチされた場合、およびリンクが接続されたり失われた場合の通知を継続的に提供します。プロセスがアタッチされてキューがアクティブになると、AvailサーバーはAVAILタイプのメッセージを送信します。非アクティブになると、サーバーはUNAVAILタイプのメッセージを送信します。
アプリケーションは、AVAIL_DEREGタイプのメッセージを送信して、可用性通知を取り消す必要があります。アプリケーションは、操作のステータスを示すAVAIL_REG_REPLYメッセージを受信します。AVAIL登録の配信キューが使用不可になると、Oracle MessageQにより登録が自動的に削除されることに注意することが重要です。その後のこの配信キューのAVAILサービスの登録解除の試行では、登録が存在しないことを示すエラー・メッセージが発生します。
リンク・ステータスのモニターと制御
この項では、アプリケーションがConnectサーバー・プロセスでOracle MessageQメッセージベース・サービスを使用して、接続、キュー・エントリ、グループ、グループ間接続およびリンク・ステータスに関する情報を取得する方法について説明します。
グループ間接続、エントリおよびグループの一覧表示
アプリケーションは、現在のグループ間接続または構成済のすべてのグループ間エントリの一覧をConnectサーバーにリクエストできます。このリクエストにより、アプリケーションは現在のOracle MessageQグループ間構成およびアクティブなグループ間接続を取得できます。さらに、Connectサーバーはグループ内で認識されているキューのリストおよびメッセージ・キューイング・バスで定義されているすべてのグループのリストを提供できます。
- すべてのグループ間接続、構成済グループおよびキュー・エントリのリストを取得するために、アプリケーションは次のメッセージをConnectサーバーと交換します。
- LIST_ALL_CONNECTIONS (リクエスト)-すべてのグループ間接続のリストを提供するためのリクエスト・メッセージ。
- LIST_ALL_CONNECTIONS (レスポンス)-すべてのグループ間接続のリストを提供するためのレスポンス・メッセージ。リンク接続がないグループはリストされません。
- LIST_ALL_ENTRIES (リクエスト)-グループのすべてのキュー・エントリのリストを提供するためのリクエスト・メッセージ。
- LIST_ALL_ENTRIES (レスポンス)-グループのすべてのキュー・エントリのリストを提供するためのレスポンス・メッセージ。
- LIST_ALL_GROUPS (リクエスト)-メッセージ・キューイング・バス上のグループのリストを提供するためのリクエスト・メッセージ。
- LIST_ALL_GROUPS (レスポンス)-メッセージ・キューイング・バス上のすべてのグループ(接続済および未接続)のリストを提供するためのレスポンス・メッセージ。
メッセージ・キューイング・バス上で定義されているすべてのグループのリストを取得するには、LIST_ALL_GROUPSメッセージをConnectサーバーに送信します。メッセージ・バスのすべてのグループ間接続のリスト、またはすべてのグループ間エントリのリストを取得するには、LIST_ALL_CONNECTIONSメッセージをConnectサーバーに送信します。グループ内のキューのリストを取得するには、LIST_ALL_ENTRIESメッセージを送信します。
これらのリクエストに対する応答は、リクエストと同じタイプおよびクラスの可変長メッセージです。戻された情報を読み取るために、アプリケーションでは、pams_get_msg
関数によって戻されるメッセージ・サイズ・パラメータを使用し、リクエストされたデータ・オブジェクトのバイト・サイズでそれを除算して、戻されたデータ・エントリの数を判別します。これらのエントリのバイト・サイズは、各メッセージのリファレンス情報で示されています。
確立されたおよび失われたグループ間リンクの通知の取得
アプリケーションでは、Connectサーバー・メッセージを使用して、それ自体のグループ内でグループ間リンクの接続と切断の通知を受信することもできます。グループ間リンクのステータスの情報を取得するには、次のメッセージベース・サービスを使用します。
アプリケーションは、ENABLE_NOTIFYメッセージをConnectサーバーに送信して、新しい接続が作成されたときまたは接続が失われたときに継続的に通知を受信します。登録済アプリケーションは、グループ間接続が新しく作成されたときにLINK_COMPLETE通知メッセージを受信します。アプリケーションは、グループ間接続が失われたときにLINK_LOST通知メッセージを受信します。これ以上通知メッセージを受信しないように登録を解除するために、アプリケーションはDISABLE_NOTIFYメッセージをConnectサーバーに送信します。
注意: |
注意: キューのアタッチメントの通知を継続的に受信するには、ENABLE_Q_NOTIFY_REQなどのキュー・サーバー・メッセージを使用することをお薦めします。今後、キュー・アタッチメント情報の取得にENABLE_NOTIFYメッセージを使用しないでください。 |
グループ間リンクの制御
グループ間リンクに関する情報の取得に加え、Connectサーバー・メッセージはリンク管理と呼ばれる機能を使用してグループ間接続の制御に使用できます。アプリケーションでは、リンク管理メッセージを使用して、グループ間リンクの作成および削除を明示的に制御します。アプリケーションが特定のノードとのネットワーク通信を制限したりネットワーク・トラフィックを削減するには、リモート・リンクを介した明示的な制御が必要な場合があります。
LINKMGT_REQリクエスト・メッセージにより、次の制御機能が有効になります。
- 照会-グループのリンク状態の問合せが可能です。
- 有効化-リンクのアドレス・エントリを再有効化します。
- 無効化-リンクのアドレス・エントリを無効にします。
- 接続-リンクのアドレス・エントリを再有効化して選択されたグループに接続します。
- 切断-リンクを暗黙的に無効化し、リクエストされたグループへのリンクを切断します。
LINKMGT_RESPレスポンス・メッセージは、リクエスト元アプリケーションにリクエストが成功したかどうかを通知し、グループ間接続に関する情報を提供します。リンク管理機能は、OpenVMSシステム向けOracle MessageQのシステム管理者ユーティリティを介して使用することもできます。図5-4は、LINKMGT_REQおよびLINKMGT_RESPにより実現された機能的な関係を図示したものです。
リンク管理は、イベント・ドリブンとすることも可能です。たとえば、アプリケーション・イベントで別のグループへのリンクをトリガーでき、これにより、メッセージの交換が可能になります。
注意: |
リンク管理を使用する場合、Oracle MessageQグループ初期化ファイルの%XGROUPセクションでgenerate connectのオプションD (無効化)を使用して、グループ間接続の自動作成を無効にし、すべてのグループ間リンクを完全に制御する必要があります。詳細は、各プラットフォーム向けのOracle MessageQインストレーションおよび構成ガイドのグループ間セクションに関する項のネットワーク接続の有効化に関するトピックを参照してください。 |
リンク管理制御機能
リンク管理リクエスト・メッセージにより、次の制御機能を使用できるようになります。
- 照会-グループのリンク状態の問合せが可能です。
- 有効化-リンクのアドレス・エントリを再有効化します。
- 無効化-リンクのアドレス・エントリを無効にします。
- 接続-リンクのアドレス・エントリを再有効化して選択されたグループに接続します。
- 切断-リンクを暗黙的に無効化し、リクエストされたグループへのリンクを切断します。
Inquire関数
リンク管理リクエスト・メッセージの照会機能を使用すると、単一のグループのリンク状態を問い合せることができます。照会機能を使用するには、リンクの状態を確認するローカルまたはリモートのグループのグループ番号を指定します。この機能では、グループ番号以外のいかなる選択パラメータも指定できません。リンク状態を同時に照会できるグループは1つのみであるため、group_numberフィールドにPSYM_LINKMGT_ALL_GROUPSシンボルを指定できません。
照会機能は、異なるバイト順序を使用しているシステム上で実行しているConnectサーバーにリクエストが送信されるときにエンディアン変換を実行します。リクエストおよびレスポンスの両方のメッセージは、リクエスト元のエンディアンでエンコードされます。
照会機能のリクエスト・メッセージ形式
表2-75に、照会機能のリクエスト・メッセージ形式を示します。
表2-75 照会機能のリクエスト・メッセージ形式
|
|
|
|
|
|
|
|
|
|
|
|
|
|
アクションを受信するグループ番号。有効な値は1から32000です。
|
|
|
PSYM_LINKMGT_ALL_TRANSPORTS
|
|
|
PSYM_LINKMGT_USE_PREVIOUS
|
|
|
PSYM_LINKMGT_USE_PREVIOUS
|
|
|
PSYM_LINKMGT_USE_PREVIOUS
|
transport_addr_len
|
オプション
|
0
|
node_name_len
|
オプション
|
0
|
照会リクエストのステータスの特定
LINKMGT_RESPメッセージのstatusフィールドには、照会リクエストの結果を示す戻りコードが含まれます。戻されるステータスと対応するユーザー・アクションの詳細は、表2-76を参照してください。
表2-76 照会機能で戻されるステータスとユーザー・アクション
|
|
|
|
|
|
|
照会リクエスト・メッセージ内のいずれかのフィールド値が無効です。リクエスト・メッセージの構文を、有効な値のリストに照らしてチェックして、正しいリクエスト・メッセージを再発行します。
|
|
|
|
リクエスト・メッセージの構文を修正します。バージョンのフィールドには、数値10が含まれている必要があります。機能コードのフィールドには、シンボルPSYM_LINKMGT_CMD_INQUIRYが含まれている必要があります。
|
|
|
|
グループ間表内で定義されていないグループのリンク状態をリクエストしました。このグループにはグループ間リンクがありません。
|
|
|
|
システム・リソースの問題で照会機能が失敗しました。
- ターゲット・グループへのネットワーク接続をチェックして、ネットワーク・リンクが稼働しているか確認します。
- Connectサーバーをチェックして、仮想メモリーが不足している状態で実行していないかどうか確認します。
- ログ・ファイルをチェックして、エラーの原因が記録されているかどうか確認します。
|
|
|
|
戻されるデータの詳細は、下のリンク管理レスポンス・メッセージの説明を参照してください。
|
成功した照会リクエストのレスポンス・メッセージの形式
照会機能が成功した場合、受信と送信の両方のグループ間リンクのステータスが、レスポンス・メッセージのin_link_stateおよびout_link_stateフィールドに戻されます。これらのフィールドでは、リンクのステータスが次のシンボルを使用して示されます。
- PSYM_LINKMGT_CONNECTED-選択されたグループの受信/送信グループ間リンクが接続されています。
- PSYM_LINKMGT_NOCN-選択されたグループの受信/送信グループ間リンクが接続されていません。
- PSYM_LINKMGT_DISABLE-選択されたグループの受信/送信グループ間リンクが無効化されています。
グループのリンク・ステータスがPSYM_LINKMGT_CONNECTEDである場合、レスポンス・メッセージには次の情報が含まれます。
表2-77 レスポンス・メッセージの情報
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
メッセージが接続されているトランスポート: PSYM_LINKMGT_TCPIP。
|
|
接続されたプラットフォームのID ( PSYM_PLATFORM_xxxx)。
|
|
|
window_size
|
このグループ用にネゴシエーションされたウィンドウ・サイズ値。
|
window_delay
|
このグループ用にネゴシエーションされたウィンドウ遅延値。
|
transport_addr_len
|
|
transport_addr
|
|
node_name_len
|
|
node_name
|
|
有効化機能
リンク管理リクエスト・メッセージの有効化機能では、リンク・アドレス・エントリが無効化されている場合に再有効化します。リクエスト・メッセージ内で指定された選択条件(グループ番号、接続タイプ、ノード名、トランスポート・アドレスなど)に一致する、グループ間接続表内のすべてのアドレスが有効化されます。選択されたグループ(複数可)のその他のアドレス・エントリはすべて無効化されます。リンクが接続済でも、有効化機能は完了します。既存のリンクが失われるまで、効果を確認できません。
有効化機能では、1つのリンクは、1つのグループの選択されたアドレスに対してのみ発生が許可されます。グループに再接続タイマーが存在する場合は、接続がすぐには試行されず、指定された時間が経過した後に試行されるように、タイマーが設定されます。その後、受信接続が可能になります。
有効化機能には、次の選択オプションがあります。
- group_numberフィールドがPSYM_LINKMGT_ALL_GROUPSに設定されている場合、ノード名およびトランスポート・アドレスは指定できません。
- 特定のグループ番号が指定され、PSYM_LINKMGT_ALL_TRANSPORTSが指定されている場合、ノード名およびトランスポート・アドレスは指定できません。
- OpenVMSシステムでは、選択条件に一致するエントリが見つからない場合は、存在するグループを使用してエントリが作成されます。UNIXおよびWindows NTシステムでは、有効化機能によって既存のアドレス・エントリのみが有効化されます。接続パラメータが変更されたり、新しいアドレス・エントリが追加されることはありません。
- On OpenVMSシステムでは、ウィンドウまたは再接続タイマーの情報が指定された場合、指定された値により選択されたエントリの既存の情報が上書きされます。UNIXおよびWindows NTシステムでは、有効化機能によって接続パラメータが変更されることはありません。
注意: |
シンボルPSYM_LINKMGT_ALL_TRANSPORTSは、Oracle MessageQバージョン4.0のLINK_MGTメッセージAPIに対しては新規です。OpenVMSシステムでは、有効化機能は、リクエスト元プロセスがOPERまたはDMQ$OPERATOR権限識別子を持つことを必要とします。 |
有効化機能のリクエスト・メッセージ形式
表2-78に、有効化機能のメッセージ形式を示します。
表2-78 有効化機能のメッセージ形式
|
|
|
|
|
|
|
|
|
|
|
|
|
|
アクションを受信するグループ番号。有効な値は1から32000です。または、PSYM_LINKMGT_ALL_GROUPSシンボルを使用して、connect_typeがリクエストされたグループのすべての既知のリンクを有効化します。
|
|
|
次のトランスポート・タイプを選択します: PSYM_LINKMGT_TCPIP
|
|
|
COMサーバーまたはグループ制御プロセス(GCP)が通信リンクへの再接続に要する時間。秒数または次の値を入力します。
PSYM_LINKMGT_NO_TIMER PSYM_LINKMGT_USE_PREVIOUS
|
|
|
送信ウィンドウのサイズ(グループ間プロトコル・バージョン3.0以降)。
|
|
|
送信ウィンドウ遅延秒数(グループ間プロトコル・バージョン3.0以降)。
|
|
|
長さ16バイトのトランスポート・アドレス文字列、TCP/IPポートID
|
|
オプション
|
トランスポート・アドレスの長さ。有効な値は、0から16バイトです。ゼロは、以前の設定の使用を指定します。
|
|
オプション
|
ノード名のASCIIテキスト。長さはnode_name_lenで決定され、最大255文字です。
|
|
オプション
|
ノード名文字列の長さ。ゼロは、以前の既知の値の使用を指定します。
|
有効化リクエストのステータスの特定
LINKMGT_RESPメッセージのステータス・フィールドには、有効化リクエストの結果を示す戻りコードが含まれます。戻されるステータスと対応するユーザー・アクションの詳細は、表2-79を参照してください。
表2-79 有効化機能で戻されるステータスとユーザー・アクション
|
|
|
|
|
|
|
リンク・エントリはすでに使用可能ですが、有効化機能が完了しました。
|
|
|
|
有効化リクエスト・メッセージ内のいずれかのフィールド値が無効です。リクエスト・メッセージの構文を、有効な値のリストに照らしてチェックして、正しいリクエスト・メッセージを再発行します。
|
|
|
|
リクエスト・メッセージの構文を修正します。バージョンのフィールドには、数値10が含まれている必要があります。機能コードのフィールドには、シンボルPSYM_LINKMGT_CMD_ENABLEが含まれている必要があります。
|
|
|
|
グループ間表内で定義されていないグループに対して有効化機能をリクエストしたため、グループ間エントリを有効化できませんでした。
|
|
選択されたグループには指定されたトランスポートのグループ間エントリがない
|
|
指定されたトランスポートを使用しているグループ間接続エントリを持たないグループ(複数の場合もあり)に対して有効化機能をリクエストしたため、グループ間エントリを有効化できませんでした。
|
|
|
|
システム・リソースの問題で有効化機能が失敗しました。
Connectサーバーをチェックして、仮想メモリーが不足している状態で実行していないかどうか確認します。
ログ・ファイルをチェックして、エラーの原因が記録されているかどうか確認します。
|
|
|
|
戻されるデータの詳細は、下のリンク管理レスポンス・メッセージの説明を参照してください。
|
成功した有効化リクエストのレスポンス・メッセージの形式
有効化機能が成功した場合、次の表に示す情報がレスポンス・メッセージで返されます。
表2-80 有効化機能
フィールド
|
説明
|
|
|
|
|
|
|
|
|
|
|
|
|
|
メッセージが接続されているトランスポート: PSYM_LINKMGT_TCPIP。
|
|
接続されたプラットフォームのID ( PSYM_PLATFORM_xxxx)。
|
|
|
|
このグループ用にネゴシエーションされたウィンドウ・サイズ値。
|
|
このグループ用にネゴシエーションされたウィンドウ遅延値。
|
|
|
|
いずれかのTCP/IPポート番号のASCII表現。
|
|
|
|
|
無効化機能
リンク管理リクエスト・メッセージの無効化機能は、リンク・アドレス・エントリが有効化されている場合にそれらを無効化します。これにより、グループの選択されたアドレスとのリンクの発生が防止されます。選択されたアドレスへの、またはアドレスからの接続の試行が不可能になります。
メッセージの選択条件(グループID、接続タイプ、ノード名、トランスポート・アドレスなど)に一致する、グループ・アドレス表内のすべてのアドレスが無効化されます。選択されたグループのその他のすべてのアドレス・エントリには影響がありません。group_numberフィールドに一致するエントリが存在しない場合は、PSYM_LINKMGT_NOGROUPが戻されます。
無効化機能は、接続処理の検索リストから、一致するグループ間エントリを除外します。
無効化機能のリクエスト・メッセージ形式
表2-81に、無効化機能のメッセージ形式を示します。
表2-81 無効化機能のメッセージ形式
|
|
|
|
|
|
|
|
|
|
|
|
|
|
アクションを受信するグループ番号。有効な値は1から32000です。
PSYM_LINKMGT_ALL_GROUPSシンボルは、このグループに対するすべての既知のリンクを示します。
|
|
|
次のトランスポート・タイプを選択します: PSYM_LINKMGT_TCPIP
|
|
|
PSYM_LINKMGT_USE_PREVIOUS
|
|
|
PSYM_LINKMGT_USE_PREVIOUS
|
|
|
PSYM_LINKMGT_USE_PREVIOUS
|
|
|
長さ16バイトのトランスポート・アドレス文字列、TCP/IPポートID
|
|
|
トランスポート・アドレスの長さ。有効な値は、0から16バイトです。ゼロは、以前の設定を使用することを示します。
|
|
|
ノード名のASCIIテキスト。長さはnode_name_lenで決定され、最大255文字です。
|
|
|
ノード名文字列の長さ。ゼロは、以前の既知の値を使用することを示します。
|
無効化リクエストのステータスの特定
LINKMGT_RESPメッセージのステータス・フィールドには、無効化リクエストの結果を示す戻りコードが含まれます。戻されるステータスと対応するユーザー・アクションの詳細は、表2-82を参照してください。
表2-82 無効化機能で戻されるステータスとユーザー・アクション
|
|
|
|
|
|
|
無効化リクエスト・メッセージ内のいずれかのフィールド値が無効です。リクエスト・メッセージの構文を、有効な値のリストに照らしてチェックして、正しいリクエスト・メッセージを再発行します。
|
|
|
|
リクエスト・メッセージの構文を修正します。バージョンのフィールドには、数値10が含まれている必要があります。機能コードのフィールドには、シンボルPSYM_LINKMGT_CMD_DISABLEが含まれている必要があります。
|
|
|
|
グループ間表内で定義されていないグループに対して無効化機能をリクエストしたため、グループ間エントリを無効化できませんでした。
|
|
選択されたグループには指定されたトランスポートのグループ間エントリがない
|
|
指定されたトランスポートを使用しているグループ間接続エントリを持たないグループ(複数の場合もあり)に対して無効化機能をリクエストしたため、グループ間エントリを無効化できませんでした。
|
|
|
|
システム・リソースの問題で無効化機能が失敗しました。
- Connectサーバーをチェックして、仮想メモリーが不足している状態で実行していないかどうか確認します。
- ログ・ファイルをチェックして、エラーの原因が記録されているかどうか確認します。
|
|
|
|
戻されるデータの詳細は、下のリンク管理レスポンス・メッセージの説明を参照してください。
|
成功した無効化リクエストのレスポンス・メッセージの形式
無効化機能が正常に完了した場合、レスポンス・メッセージには次の情報が含まれます。
表2-83 成功した無効化リクエストのレスポンス・メッセージの形式
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
メッセージが接続されているトランスポート: PSYM_LINKMGT_TCPIP。
|
|
接続されたプラットフォームのID ( PSYM_PLATFORM_xxxx)。
|
|
|
|
このグループ用にネゴシエーションされたウィンドウ・サイズ値。
|
|
このグループ用にネゴシエーションされたウィンドウ遅延値。
|
|
|
|
いずれかのTCP/IPポート番号のASCII表現。
|
|
|
|
|
接続機能
リンク管理リクエスト・メッセージの接続機能は、リンク・アドレス・エントリが無効化されている場合にそれらを再有効化し、接続されていない場合には選択されたグループとの接続試行をすぐに行います。
その後、受信接続が可能になります。リンクが接続済である場合も、この機能は完了できます。既存のリンクが失われるまで、この機能の効果は確認できません。
メッセージの選択条件(グループID、接続タイプ、ノード名、トランスポート・アドレスなど)に一致する、グループ・アドレス表内のすべてのアドレスが有効化され、選択されたグループのその他のすべてのアドレス・エントリは無効化されます。一致するエントリが見つからない場合、エントリが作成され、存在するグループが提供されます。ウィンドウまたは再接続タイマーの情報が指定された場合、これらの値により選択されたエントリの既存の情報が上書きされます。
group_numberフィールドがPSYM_LINKMGT_ALL_GROUPSに設定されている場合、ノード名およびトランスポート・アドレスは指定できません。特定のグループ番号が指定され、PSYM_LINKMGT_ALL_TRANSPORTSが指定されている場合、ノード名およびトランスポート・アドレスは指定できません。
OpenVMSシステムでは、接続機能は、リクエスト元プロセスがOPERまたはDMQ$OPERATOR権限識別子を持つことを必要とします。
接続機能のリクエスト・メッセージ形式
表2-84に、接続リクエスト機能のメッセージ形式を示します。
表2-84 接続リクエスト機能のメッセージ形式
|
|
|
|
|
|
|
|
リクエストを識別するユーザー指定のコード(指定された場合)。
|
|
|
|
|
|
アクションを受信するグループ番号。有効な値は1から32000です。
PSYM_LINKMGT_ALL_GROUPSシンボルは、このグループに対するすべての既知のリンクを示します。
|
|
|
|
|
|
COMサーバーが通信リンクへの再接続に要する時間。秒数または次の値を入力します。
PSYM_LINKMGT_NO_TIMER PSYM_LINKMGT_USE_PREVIOUS
|
|
|
送信ウィンドウのサイズ(グループ間プロトコル・バージョン3.0以降)。
|
|
|
送信ウィンドウ遅延秒数(グループ間プロトコル・バージョン3.0以降)。
|
|
|
長さ16バイトのトランスポート・アドレス文字列、TCP/IPポートID
|
|
|
トランスポート・アドレスの長さ。有効な値は、0から16バイトです。ゼロは、以前の設定の使用を指定します。
|
|
|
ノード名のASCIIテキスト。長さはnode_name_lenで決定され、最大255文字です。
|
|
|
ノード名文字列の長さ。ゼロは、以前の既知の値の使用を指定します。
|
接続リクエストのステータスの特定
LINKMGT_RESPメッセージのステータス・フィールドには、接続リクエストの結果を示す戻りコードが含まれます。戻されるステータスと対応するユーザー・アクションの詳細は、表2-85を参照してください。
表2-85 接続機能で戻されるステータスとユーザー・アクション
|
|
|
|
|
|
|
リンク・エントリはすでに使用可能ですが、接続機能が完了しました。
|
|
|
|
接続リクエスト・メッセージ内のいずれかのフィールド値が無効です。リクエスト・メッセージの構文を、有効な値のリストに照らしてチェックして、正しいリクエスト・メッセージを再発行します。
|
|
|
|
リクエスト・メッセージの構文を修正します。バージョンのフィールドには、数値10が含まれている必要があります。機能コードのフィールドには、シンボルPSYM_LINKMGT_CMD_CONNECTが含まれている必要があります。
|
|
|
|
グループ間表内で定義されていないグループに対して接続機能をリクエストしたため、グループ間エントリを接続できませんでした。
|
|
選択されたグループには指定されたトランスポートのグループ間エントリがない
|
|
指定されたトランスポートを使用しているグループ間接続エントリを持たないグループ(複数の場合もあり)に対して接続機能をリクエストしたため、グループ間リンクを接続できませんでした。
|
|
|
|
システム・リソースの問題で接続機能が失敗しました。
Connectサーバーをチェックして、仮想メモリーが不足している状態で実行していないかどうか確認します。
ログ・ファイルをチェックして、エラーの原因が記録されているかどうか確認します。
|
|
|
|
戻されるデータの詳細は、下のリンク管理レスポンス・メッセージの説明を参照してください。
|
成功した接続リクエストのレスポンス・メッセージの形式
接続リクエストが成功した場合、レスポンス・メッセージには次の情報が含まれます。
表2-86 成功した接続リクエストのレスポンス・メッセージの形式
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
接続されたプラットフォームのID ( PSYM_PLATFORM_xxxx)。
|
|
|
|
このグループ用にネゴシエーションされたウィンドウ・サイズ値。
|
|
このグループ用にネゴシエーションされたウィンドウ遅延値。
|
|
|
|
いずれかのTCP/IPポート番号のASCII表現。
|
|
|
|
|
切断機能
リンク管理リクエスト・メッセージの切断機能は、リンクの暗黙的な無効化をリクエストし、リクエストされたグループへのリンクをすべて切断します。メッセージの選択条件(グループID、接続タイプ、ノード名、トランスポート・アドレスなど)に一致する、グループ・アドレス表内のすべてのアドレスが切断されます。選択されたグループのその他のすべてのアドレス・エントリには影響がありません。group_numberフィールドに一致するエントリが存在しない場合は、PSYM_LINKMGT_NOGROUPが戻されます。OpenVMSシステムでは、切断機能は、リクエスト元プロセスがOPERまたはDMQ$OPERATOR権限識別子を持つことを必要とします。
切断機能のリクエスト・メッセージ形式
表2-87に、切断機能のメッセージ形式を示します。
表2-87 切断機能のメッセージ形式
|
|
|
user_tag
|
必須
|
10
|
function_code
|
必須
|
リクエストを識別するユーザー指定のコード。
|
group_number
|
必須
|
PSYM_LINKMGT_CMD_DISCONNECT
|
connect_type
|
必須
|
アクションを受信するグループ番号。有効な値は1から32000です。PSYM_LINKMGT_ALL_GROUPSシンボルは、このグループのすべての既知のリンクを切断することを意味します。
|
reconnect_timer
|
必須
|
次のトランスポート・タイプを選択します:
PSYM_LINKMGT_TCPIP
|
window_size
|
オプション
|
PSYM_LINKMGT_USE_PREVIOUS
|
window_delay
|
オプション
|
PSYM_LINKMGT_USE_PREVIOUS
|
transport_addr
|
オプション
|
PSYM_LINKMGT_USE_PREVIOUS
|
transport_addr_ len
|
オプション
|
長さ16バイトのトランスポート・アドレス文字列、TCP/IPポートID
|
node_name
|
オプション
|
トランスポート・アドレスの長さ。有効な値は、0から16バイトです。ゼロは、以前の設定の使用を指定します。
|
node_name_len
|
オプション
|
ノード名のASCIIテキスト。長さはnode_name_lenで決定され、最大255文字です。
|
切断リクエストのステータスの特定
LINKMGT_RESPメッセージのステータス・フィールドには、切断リクエストの結果を示す戻りコードが含まれます。戻されるステータスと対応するユーザー・アクションの詳細は、表2-88を参照してください。
表2-88 切断機能で戻されるステータスとユーザー・アクション
|
|
|
|
|
|
|
切断リクエスト・メッセージ内のいずれかのフィールド値が無効です。リクエスト・メッセージの構文を、有効な値のリストに照らしてチェックして、正しいリクエスト・メッセージを再発行します。
|
|
|
|
リクエスト・メッセージの構文を修正します。バージョンのフィールドには、数値10が含まれている必要があります。機能コードのフィールドには、シンボルPSYM_LINKMGT_CMD_DISCONNECTが含まれている必要があります。
|
|
|
|
グループ間表内で定義されていないグループに対して切断機能をリクエストしたため、グループ間接続を切断できませんでした。
|
|
|
|
グループ間表内で定義されていないグループに対して接続機能をリクエストしたため、グループ間エントリを接続できませんでした。
|
|
選択されたグループには指定されたトランスポートのグループ間エントリがない
|
|
指定されたトランスポートを使用しているグループ間接続エントリを持たないグループ(複数の場合もあり)に対して接続機能をリクエストしたため、グループ間リンクを接続できませんでした。
|
|
|
|
システム・リソースの問題で接続機能が失敗しました。
- Connectサーバーをチェックして、仮想メモリーが不足している状態で実行していないかどうか確認します。
- ログ・ファイルをチェックして、エラーの原因が記録されているかどうか確認します。
|
|
|
|
戻されるデータの詳細は、下のリンク管理レスポンス・メッセージの説明を参照してください。
|
成功した切断機能のレスポンス・メッセージの形式
切断機能が成功した場合、レスポンス・メッセージは次の情報を戻します。
表2-89 成功した切断機能のレスポンス・メッセージの形式
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
メッセージが接続されているトランスポート: PSYM_LINKMGT_TCPIP。
|
|
接続されたプラットフォームのID ( PSYM_PLATFORM_xxxx)。
|
|
|
|
このグループ用にネゴシエーションされたウィンドウ・サイズ値。
|
|
このグループ用にネゴシエーションされたウィンドウ遅延値。
|
|
|
|
いずれかのTCP/IPポート番号のASCII表現。
|
|
|
|
|
リンク管理の設計の考慮事項
表2-90に、リンク管理を使用しているアプリケーションについて、設計時の重要な考慮事項を示します。
表2-90 リンク管理の設計の考慮事項
|
|
フェイルオーバー・ノード表の無効化
|
アプリケーションがLINKMGT_REQリクエストを発行するときに、Connectサーバーはグループ初期化ファイルで定義されたフェイルオーバー・ノード表を無効化します。フェイルオーバー・ノード表を無効化すると、アプリケーションでリンク・リクエストを完全に制御できます。
|
追加のグループ接続の無効化
|
アプリケーションがLINKMGT_REQリクエストを発行してリンクを切断すると、Connectサーバーは該当グループへの以降の接続を無効化します。接続を無効化することにより、アプリケーションが別のLINKMGT_REQリクエストを発行するまで、該当グループへの追加のリンクが発生しなくなります。
|
接続リクエストの検証
|
単一のグループに対して接続リクエストが行われた場合、XGROUP_VERIFY表はメッセージ内に指定された情報を使用して、接続のリクエストを受諾するか拒否するかを決定します。グループ間検証は、受信リクエストでのみ動作します。グループ間検証のデータ構造は、リンク管理の接続または切断メッセージ内の情報で上書きされます。
|
接続および切断リクエストの確認応答
|
すでにリンクが正常に接続された後にConnectサーバーが接続メッセージを受信すると、Connectサーバーは2番目の接続メッセージを拒否します。すでにリンクが正常に切断された後にConnectサーバーが切断メッセージを受信すると、Connectサーバーは2番目の切断メッセージに対して正常終了メッセージを使用して確認応答を行います。
|
ローカルおよびリモートのリクエストの制限
|
Connectサーバーは、ローカル・アプリケーションからのリンク制御リクエストのみを受け入れます。ただし、Connectサーバーは、リモートからのリンク・ステータスの照会を、ローカル・アプリケーションからの場合と同様に受け入れます。
|
必要な権限
|
OpenVMSシステム上のアプリケーションのリンク制御リクエストでは、アプリケーションがVMS
OPER権限を持っているか、DMQ$OPERATOR権限識別子を付与されている必要があります。
|
キューの現在のステータスの把握
この項では、アプリケーションがキュー・サーバーのメッセージベース・サービスを使用して、特定のグループのすべてのアクティブなキューのステータス情報を取得する方法、またはキューのステータス変更の通知を取得する方法を説明します。アクティブなキューのリストには、アタッチされたすべての永続キューおよび一時キューが表示されます。
グループ内でアタッチされているキューの一覧表示
キュー・サーバー・プロセスでは、選択されたグループのアタッチされたすべてのキューのリストをアプリケーションに提供できます。この情報は、ローカルおよびリモートのグループに対して提供され、永続キューと一時キューの両方がリストに含まれます。このリストをリクエストするために、アプリケーション・プログラムはLIST_ALL_Q_REQタイプのメッセージをキュー・サーバー・プロセスに送信します。
選択されたグループ内のすべてのキューの情報を把握するために、アプリケーションは次のメッセージをキュー・サーバーと交換します。
- LIST_ALL_Q_REQ-すべてのキューのステータスをリクエストするリクエスト・メッセージ。
- LIST_ALL_Q_RESP-すべてのキューとそのステータスを提供するレスポンス・メッセージ。
アプリケーションは、アタッチされているすべてのキューのリストを提供するLIST_ALL_Q_RESPタイプのレスポンス・メッセージをキュー・サーバーから受信します。LIST_ALL_Q_RESPメッセージにはキュー名の長いリストが含まれている可能性があるため、アプリケーションは戻された情報を格納できる十分なバッファ・サイズを割り当てる必要があります。
アタッチメント通知の受信
キュー・サーバー・プロセスは、アタッチされているすべてのキューと、その後の、それ自体のグループのキューのアタッチおよびデタッチをアプリケーションに通知できます。アプリケーションは、ENABLE_Q_NOTIFY_REQタイプのメッセージをグループのキュー・サーバー・プロセスに送信することで、このサービスを登録します。キュー・サーバーはENABLE_Q_NOTIFY_RESPタイプのメッセージで応答し、登録リクエストのステータスを示します。
選択されたグループ内のすべてのキューの情報を把握して、新しいキューのアタッチとデタッチの通知を継続的に受信するために、アプリケーションは次のメッセージをキュー・サーバーと交換します。
- ENABLE_Q_NOTIFY_REQ-すべてのキューの現在のステータスと今後のキュー・ステータスの変更通知をリクエストするためのリクエスト・メッセージ。
- ENABLE_Q_NOTIFY_RESP-すべてのキューの現在のステータスとキュー・ステータス変更がレポートされることの確認を提供するためのレスポンス・メッセージ。
- Q_UPDATE-選択されたグループ内で新しくアタッチおよびデタッチされたキューに関する情報を提供する通知メッセージ。
- DISABLE_Q_NOTIFY_REQ-キュー・ステータスの変更通知の中止をリクエストするリクエスト・メッセージ。
- DISABLE_Q_NOTIFY_RESP-キュー・ステータスの変更通知が正常に無効化されたことを示すレスポンス・メッセージ。
登録リクエストは、送信側のレスポンス・キュー番号を新規アタッチおよびデタッチの通知を受信するアプリケーションのリストに加えます。通知は、Q_UPDATEタイプのメッセージを使用して送信されます。アプリケーションは、DISABLE_Q_NOTIFY_REQタイプのメッセージを送信して通知登録を取り消すことができます。キュー・サーバーはDISABLE_Q_NOTIFY_RESPタイプのリプライで応答し、登録取消しリクエストのステータスを示します。
メッセージ・リカバリ・ファイルの管理
Oracle MessageQメッセージベース・サービスは、MRSサーバーとともに使用して、リカバリ可能メッセージング用ファイルを維持し、MRSジャーナリング機能のオンとオフを切り替えます。これらの機能を実行するためのメッセージベース・サービスは、OpenVMSシステム上でのみ使用可能です。これらの機能は、OpenVMSシステム上のOracle MessageQ Managerユーティリティからも使用可能です。Oracle MessageQメッセージ・リカバリ・システムの使用方法の詳細は、「リカバリ可能メッセージの送信」のトピックを参照してください。
Oracle MessageQでは、次の4つのOracle MessageQファイルがMRSメッセージベース・サービスで使用されます。
表2-91 MRSメッセージベース・サービス用Oracle MessageQファイル
|
送信側システム上でのリカバリ用に指定されたメッセージ。
|
|
受信側システム上でのリカバリ用に指定されたメッセージ。
|
|
Oracle MessageQによりリカバリ用に指定されていない、配信不可メッセージ。これらのメッセージは、アプリケーション・プログラムによって後でDLJから配信できます。
|
|
正常に配信されたリカバリ可能メッセージで、メッセージ・イベントの監査証跡を形成します。
|
PCJファイルへのジャーナリングの制御
表2-79のメッセージを使用して、PCJファイルを置き換えたときにジャーナリングを無効化し、その後ジャーナリングを再有効化できます。
- MRS_JRN_DISABLE-PCJファイルへのジャーナリングを無効にするリクエスト・メッセージ。
- MRS_JRN_DISABLE_REP-リクエストのステータスを示すレスポンス・メッセージ。
- MRS_JRN_ENABLE-PCJファイルへのジャーナリングを有効にするリクエスト・メッセージ。
- MRS_JRN_ENABLE_REP-リクエストのステータスを示すレスポンス・メッセージ。
PCJを閉じて新しいPCJを開く必要がある場合は、MRS_JRN_DISABLEメッセージを使用して、PCJファイルへのジャーナリングを無効化します。MRS_JRN_DISABLE_REPメッセージは、操作のステータスを戻します。MRS_JRN_ENABLEメッセージを使用して、新しいPCJファイルを開いた後にジャーナリングを有効化します。MRS_JRN_ENABLE_REPメッセージは、操作のステータスを戻します。
メッセージ・リファレンス
この章では、すべてのOracle MessageQメッセージベース・サービスについて、メッセージ・タイプによるアルファベット順で詳細に説明します。それぞれの説明では、メッセージ・タイプ・コード名、サービスを実行するOracle MessageQサーバー名、およびメッセージ領域の詳細な定義と、Oracle MessageQ APIまたはスクリプトを使用したメッセージの送信またはレスポンスや通知メッセージの読取りに必要な引数を示します。Oracle MessageQのすべてのメッセージベース・サービス・メッセージの定義は、現在p_msg.hインクルード・ファイルで提供されています。
Oracle MessageQのメッセージベース・サービスは、リクエスタとして機能するアプリケーション・プログラムと、リクエストを実行するOracle MessageQサーバー・プロセスの間で送信されます。メッセージがシステム間で正しく認識されるようにするには、リクエスタとサーバーの両方によって認識されるエンディアン形式でメッセージ・データが送受信される必要があります。大部分のOracle MessageQメッセージベース・サービスでは、2つのシステムのエンディアン形式が異なる場合にはこの変換が自動的に実行されます。ただし、一部のメッセージベース・サービスではこの変換が行われないため、ユーザー・アプリケーションがメッセージをサーバー・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。各メッセージベース・サービスの説明では、データ構造がRISCアラインされているかどうか、およびサーバーがエンディアン変換を自動的に実行するかどうかについて記述しています。環境変数VIEWFILES
およびVIEWDIR
は、メッセージベース・サービスを使用する前に正しく設定されている必要があることに注意してください。たとえば、VIEWDIR=$TUXDIR/udataobj
およびVIEWFILES=otmq_mbs.V
をエクスポートします。
表2-92 すべてのOracle MessageQメッセージベース・サービス(メッセージ・タイプによるアルファベット順)
注意: |
各サービスの「関連項目」という項に、関連するOracle MessageQメッセージベース・サービスのリストがあります。これらのサービスの詳細は、「メッセージ・リファレンス」の項を参照してください。 |
AVAIL
アプリケーションは、AVAIL_REGメッセージをAvailサーバーに送信することで、ローカルおよびリモートのグループのキューがアクティブまたは非アクティブになったときに通知を受信するように登録できます。選択されたグループのキューがアクティブになると、AVAIL通知メッセージが登録済アプリケーションに送信されます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「キューのステータスの取得」のトピックを参照してください。
アプリケーションは、AVAIL_DEREGタイプのメッセージを送信して、可用性通知を取り消す必要があります。アプリケーションは、操作のステータスを示すAVAIL_REG_REPLYメッセージを受信します。AVAIL登録の配信キューが使用不可になると、Oracle MessageQにより登録が自動的に削除されることに注意することが重要です。その後のこの配信キューのAVAILサービスの登録解除の試行では、登録が存在しないことを示すエラー・メッセージが発生します。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Availサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
引数
関連項目
-
AVAIL_DEREG
-
AVAIL_REG
-
AVAIL_REG_REPLY
-
UNAVAIL
例
AVAILサービスの例は、availサービス、avail登録、avail登録解除およびavailメッセージの取得を示しています。完全なコードの例x_avail.cは、examplesディレクトリ内にあります。
AVAIL_DEREG
アプリケーションは、AVAIL_REGメッセージをAvailサーバーに送信することで、ローカルおよびリモートのグループのキューがアクティブまたは非アクティブになったときに通知を受信するように登録できます。通知メッセージが不要になった場合、アプリケーションはAVAIL_DEREGメッセージをAvailサーバーに送信して、登録を取り消します。AVAIL登録の配信キューが使用不可になると、Oracle MessageQにより登録が自動的に削除されることに注意することが重要です。その後のこの配信キューのAVAILサービスの登録解除の試行では、登録が存在しないことを示すエラー・メッセージが発生します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「キューのステータスの取得」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、Availサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-95 メッセージ・データ・フィールド
|
|
|
|
|
|
|
フォーマット・バージョン番号。20である必要があります。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
引数
関連項目
-
AVAIL
-
AVAIL_REG
-
AVAIL_REG_REPLY
-
UNAVAIL
例
AVAILサービスの例は、availサービス、avail登録、avail登録解除およびavailメッセージの取得を示しています。完全なコードの例x_avail.cは、examplesディレクトリ内にあります。
AVAIL_REG
アプリケーションは、AVAIL_REGメッセージをAvailサーバーに送信することで、ローカルおよびリモートのグループのキューがアクティブまたは非アクティブになったときに通知を受信するように登録できます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「キューのステータスの取得」のトピックを参照してください。アプリケーションが配信キューからデタッチすると、AVAIL登録は自動的に削除されます。アプリケーションは、AVAIL_DEREGタイプのメッセージを送信して、キューのタイプによらず通知を取り消す必要があります。アプリケーションは、操作のステータスを示すAVAIL_REG_REPLYメッセージを受信します。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、Availサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-97 メッセージ・データ・フィールド
|
|
|
|
|
|
|
フォーマット・バージョン番号。31である必要があります。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
この関数がタイムアウトするまでの間隔(秒単位で指定)。
|
引数
関連項目
-
AVAIL_REG_REPLY
-
AVAIL
-
UNAVAIL
-
AVAIL_DEREG
例
AVAILサービスの例は、availサービス、avail登録、avail登録解除およびavailメッセージの取得を示しています。完全なコードの例x_avail.cは、examplesディレクトリ内にあります。
AVAIL_REG_REPLY
アプリケーションは、AVAIL_REGメッセージをAvailサーバーに送信することで、ローカルおよびリモートのグループのキューがアクティブまたは非アクティブになったときに通知を受信するように登録します。AVAIL_REG_REPLYメッセージは、アプリケーションが通知メッセージの受信を正常に登録または登録解除したかどうかを示します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「キューのステータスの取得」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Availサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
引数
関連項目
-
AVAIL_REG
-
AVAIL_DEREG
-
AVAIL
-
UNAVAIL
例
AVAILサービスの例は、availサービス、avail登録、avail登録解除およびavailメッセージの取得を示しています。完全なコードの例x_avail.cは、examplesディレクトリ内にあります。
DISABLE_NOTIFY
アプリケーションは、ENABLE_NOTIFYメッセージをConnectサーバーに送信することで、グループ間リンクが確立されたときや失われたときの通知の受信を登録できます。アプリケーションで通知メッセージを受信する必要がなくなったときに、DISABLE_NOTIFYメッセージをConnectサーバーに送信して登録を解除します。DISABLE_NOTIFYメッセージにより、グループ間リンクの変更の通知を中止できます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「確立されたおよび失われたグループ間リンクの通知の取得」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、Connectサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-101 メッセージ・データ・フィールド
|
|
|
|
|
|
|
|
|
|
|
ブール・フラグ、グループ間接続通知を取り消す場合は1、それ以外は0。
|
引数
関連項目
-
ENABLE_NOTIFY
-
LINK_COMPLETE
-
LINK_LOST
DISABLE_Q_NOTIFY_REQ
アプリケーションは、ENABLE_Q_NOTIFY_REQメッセージを送信することで、ローカルおよびリモートのグループのキューのステータスが変化したときの通知を受信するように登録できます。DISABLE_Q_NOTIFY_REQは、アプリケーションで通知メッセージを受信する必要がなくなったときに、キュー・サーバーに送信されます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「アタッチメント通知の受信」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、キュー・サーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
引数
表2-104 引数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSG_TYPE_DISABLE_Q_ NOTIFY_REQ
|
関連項目
-
DISABLE_Q_NOTIFY_RESP
-
ENABLE_Q_NOTIFY_REQ
-
ENABLE_Q_NOTIFY_RESP
-
Q_UPDATE
DISABLE_Q_NOTIFY_RESP
アプリケーションは、ENABLE_Q_NOTIFY_REQメッセージを送信することで、ローカルおよびリモートのグループのキューのステータスが変化したときの通知を受信するように登録できます。DISABLE_Q_NOTIFY_REQメッセージは、アプリケーションで通知メッセージする必要がなくなったときに、キュー・サーバーに送信されます。DISABLE_Q_NOTIFY_RESPメッセージは、アプリケーションが通知メッセージの受信を正常に登録解除したかどうかを示します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「アタッチメント通知の受信」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、キュー・サーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-105 メッセージ・データ・フィールド
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
キュー・タイプ(数値エンコードされたP、S、M)。
|
|
|
|
キューがアクティブであることを示すブール・フラグ。
|
|
|
|
キューがアタッチされていることを示すブール・フラグ。
|
|
|
|
|
引数
表2-106 引数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSG_TYPE_DISABLE_Q_ NOTIFY_RESP
|
関連項目
-
DISABLE_Q_NOTIFY_REQ
-
ENABLE_Q_NOTIFY_REQ
-
ENABLE_Q_NOTIFY_RESP
-
Q_UPDATE
ENABLE_NOTIFY
アプリケーションは、ENABLE_NOTIFYメッセージをConnectサーバーに送信することで、グループ間リンクが確立されたときや失われたときの通知の受信を登録できます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「確立されたおよび失われたグループ間リンクの通知の取得」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、Connectサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-107 メッセージ・データ・フィールド
|
|
|
|
|
|
|
|
|
|
|
ブール・フラグ、グループ間接続通知の対象とする場合は1、それ以外は0。
|
引数
関連項目
ENABLE_Q_NOTIFY_REQ
アプリケーションは、ENABLE_Q_NOTIFY_REQメッセージを送信することで、ローカルおよびリモートのグループのキューのステータスが変化したときの通知を受信するように登録できます。このメッセージは、すべてのアクティブなキューのリストをリクエストして、キューがアタッチまたはデタッチされた場合、およびアクティブまたは非アクティブになった場合の後続の通知をリクエストします。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「アタッチメント通知の受信」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、キュー・サーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
引数
表2-110 引数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSG_TYPE_ENABLE_Q_NOTIFY_REQ
|
関連項目
-
DISABLE_Q_NOTIFY_REQ
-
DISABLE_Q_NOTIFY_RESP
-
ENABLE_Q_NOTIFY_RESP
-
Q_UPDATE
ENABLE_Q_NOTIFY_RESP
アプリケーションは、ENABLE_Q_NOTIFY_REQメッセージを送信することで、ローカルおよびリモートのグループのキューのステータスが変化したときの通知を受信するように登録できます。ENABLE_Q_NOTIFY_RESPメッセージは、すべてのアクティブなキューのリストを配信し、その後にQ_UPDATEメッセージを使用してアタッチ、デタッチ、またアクティブおよび非アクティブへのステータス変更をアプリケーションに通知します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「アタッチメント通知の受信」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、キュー・サーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-111 メッセージ・データ・フィールド
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
キュー・タイプ(数値エンコードされたP、S、M)。
|
|
|
|
キューがアクティブであることを示すブール・フラグ。
|
|
|
|
キューがアタッチされていることを示すブール・フラグ。
|
|
|
|
|
引数
表2-112 引数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSG_TYPE_ENABLE_NOTIFY_RESP
|
関連項目
-
DISABLE_Q_NOTIFY_REQ
-
DISABLE_Q_NOTIFY_RESP
-
ENABLE_Q_NOTIFY_REQ
-
Q_UPDATE
LINKMGT_REQ
アプリケーションは、リンク管理メッセージを使用して、グループ間の接続を明示的に制御できます。LINKMGT_REQメッセージを使用して、リモート・グループへの接続、リモート・グループからの切断またはリモートOracle MessageQグループに関する情報の取得をリクエストします。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間リンクの制御」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、Connectサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-113 メッセージ・データ・フィールド
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PSYM_LINKMGT_CMDを使用するメッセージの機能:
注意: |
_INQUIRY_CONNECTおよび_DISCONNECT: このリリースのOracle Tuxedo MP環境ではサポートされません。 |
|
|
|
|
アクションを受信するグループ番号。有効な値は1から32,000。PSYM_LINKMGT_ALL_GROUPSはすべての既知のリンクを示します。
|
|
|
|
|
|
|
|
COMサーバーが通信リンクへの再接続に要する時間。秒数または次の値を入力します。
PSYM_LINKMGT_NO_TIMER PSYM_LINKMGT_USE_PREVIOUS
|
|
|
|
送信ウィンドウのサイズ(グループ間プロトコル・バージョン3.0以降)。メッセージの数または次の値を入力します。
PSYM_LINKMGT_USE_PREVIOUS
|
|
|
|
送信ウィンドウ遅延秒数(グループ間プロトコル・バージョン
PSYM_LINKMGT_USE_PREVIOUS
|
|
|
|
Oracle MessageQで使用するために予約されています。
|
|
|
|
トランスポート・アドレスの長さ。0から16バイトの値、0 = 以前の設定を使用。
|
|
|
|
長さ16バイトのトランスポート・アドレス文字列、TCP/IPポートID
|
|
|
|
ノード名文字列の長さ。0 = 以前の既知の値を使用。
|
|
|
|
ノード名のASCIIテキスト。長さはnode_name_lenによって決定され、最大255文字です。
|
引数
関連項目
LINKMGT_RESP
アプリケーションは、リンク管理メッセージを使用して、グループ間の接続を明示的に制御できます。LINKMGT_REQメッセージを使用して、リモート・グループへの接続、リモート・グループからの切断またはリモートOracle MessageQグループに関する情報の取得をリクエストします。LINKMGT_RESPメッセージは、リクエスト元アプリケーションに接続または切断リクエストが成功したかどうかを通知し、グループ間接続に関する情報を提供します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間リンクの制御」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Connectサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-115 メッセージ・データ・フィールド
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
アクションを受信するグループ番号。有効な値は1から32,000です。
PSYM_LINKMGT_ALL_GROUPSは、すべての既知のリンクを示します。
|
|
|
|
リクエスト時点の受信リンクの状態。値は次のとおりです。
PSYM_LINKMGT_UNKNOWN PSYM_LINKMGT_NOCNT PSYM_LINKMGT_CONNECTED PSYM_LINKMGT_DISABLED
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ステータス・コード
表2-116 ステータス・コード
|
|
|
|
|
メッセージが不完全であるか、内容とダイアログの整合が取れていません。
|
|
|
|
|
|
|
|
|
PSYM_LINKMGT_NOTSUPPORTED
|
|
PSYM_LINKMGT_OPERATIONFAIL
|
|
|
|
引数
関連項目
LINK_COMPLETE
アプリケーションは、ENABLE_NOTIFYメッセージをConnectサーバーに送信することで、グループ間リンクが確立されたときや失われたときの通知の受信を登録できます。登録済アプリケーションは、グループ間接続が発生したときに毎回LINK_COMPLETEメッセージを受信します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「確立されたおよび失われたグループ間リンクの通知の取得」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Connectサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-118 メッセージ・データ・フィールド
|
|
|
|
|
|
|
|
|
|
|
Oracle MessageQ用に予約されています。
|
|
|
|
リモート・ノードのオペレーティング・システムを示すコード。
|
|
|
|
Oracle MessageQ用に予約されています。
|
引数
関連項目
-
DISABLE_NOTIFY
-
ENABLE_NOTIFY
-
LINK_LOS
T
LINK_LOST
アプリケーションは、ENABLE_NOTIFYメッセージをConnectサーバーに送信することで、グループ間リンクが確立されたときや失われたときの通知の受信を登録できます。登録済アプリケーションは、グループ間接続が失われたときに毎回LINK_LOSTメッセージを受信します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「確立されたおよび失われたグループ間リンクの通知の取得」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Connectサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-120 メッセージ・データ・フィールド
|
|
|
|
|
|
|
|
|
|
|
Oracle MessageQ用に予約されています。
|
|
|
|
リモート・ノードのオペレーティング・システムを示すコード。
|
|
|
|
Oracle MessageQ用に予約されています。
|
引数
関連項目
-
DISABLE_NOTIFY
-
ENABLE_NOTIFY
-
LINK_COMPLET
E
LIST_ALL_CONNECTIONS (リクエスト)
アプリケーションはLIST_ALL_CONNECTIONSメッセージをConnectサーバーに送信して、アクティブおよび構成済のすべてのグループ間接続の一覧をConnectサーバーにリクエストできます。このリクエストに対する応答は、同じタイプおよびクラスの可変長メッセージとなり、グループ間接続情報が含まれます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間接続、エントリおよびグループの一覧表示」のトピックを参照してください。
注意: |
このメッセージはRISCアラインされています。 |
C メッセージ構造
ありません。
メッセージ・データ・フィールド
ありません。
引数
表2-122 引数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSG_TYPE_LIST_ALL_ -CONNECTIONS
|
関連項目
-
LIST_ALL_CONNECTIONSレスポンス・メッセージ
-
LIST_ALL_ENTRIES (リクエスト)
-
LIST_ALL_ENTRIES (レスポンス)
-
LIST_ALL_GROUPS (リクエスト)
-
LIST_ALL_GROUPS (レスポンス)
LIST_ALL_CONNECTIONS (レスポンス)
アプリケーションはLIST_ALL_CONNECTIONSメッセージをConnectサーバーに送信して、アクティブおよび構成済のすべてのグループ間接続の一覧をConnectサーバーにリクエストできます。このリクエストに対する応答は、グループ間接続情報が含まれるメッセージと同じタイプおよびクラスの可変長メッセージです。戻された情報を読み取るには、アプリケーションは応答の合計バイト数を計算し、20バイトのグループ間エントリの長さで除算し、戻されたレコードの数を判別する必要があります。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間接続、エントリおよびグループの一覧表示」のトピックを参照してください。
このメッセージは、リング接続が存在しないグループに関する情報は戻しません。LIST_ALL_CONNECTIONSのstateフィールドは、常に3 (リンク済)である必要があります。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Connectサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-123 メッセージ・データ・フィールド
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
グループのオペレーティング・システム・タイプ(OpenVMSのみ)。
|
|
|
|
|
|
|
|
|
|
|
|
Oracle MessageQ用に予約されています。
|
引数
表2-124 引数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSG_TYPE_LIST_ALL_ -CONNECTIONS
|
関連項目
-
LIST_ALL_CONNECTIONSリクエスト・メッセージ
-
LIST_ALL_ENTRIES (リクエスト)
-
LIST_ALL_ENTRIES (レスポンス)
-
LIST_ALL_GROUPS (リクエスト)
-
LIST_ALL_GROUPS (レスポンス)
LIST_ALL_ENTRIES (リクエスト)
アプリケーションはLIST_ALL_ENTRIESメッセージをConnectサーバーに送信して、グループ内のアタッチ済および構成済のすべてのキューの一覧をConnectサーバーにリクエストできます。このリクエストに対する応答は、キューの情報が含まれるメッセージと同じタイプおよびクラスの可変長メッセージです。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間接続、エントリおよびグループの一覧表示」のトピックを参照してください。
注意: |
このメッセージはRISCアラインされています。 |
C メッセージ構造
ありません。
メッセージ・データ・フィールド
ありません。
引数
表2-125 引数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSG_TYPE_LIST_ALL_ ENTRIES
|
関連項目
- LIST_ALL_ENTRIESレスポンス・メッセージ
- LIST_ALL_CONNECTIONS (リクエスト)
- LIST_ALL_CONNECTIONS (レスポンス)
- LIST_ALL_GROUPS (リクエスト)
- LIST_ALL_GROUPS (レスポンス)
LIST_ALL_ENTRIES (レスポンス)
アプリケーションはLIST_ALL_ENTRIESメッセージをConnectサーバーに送信して、グループ内のアタッチ済および構成済のすべてのキューの一覧をConnectサーバーにリクエストできます。このリクエストに対する応答は、キューの情報が含まれるメッセージと同じタイプおよびクラスの可変長メッセージです。戻された情報を読み取るには、アプリケーションは応答の合計バイト数を計算し、24バイトのキュー・エントリの長さで除算し、戻されたレコードの数を判別する必要があります。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間接続、エントリおよびグループの一覧表示」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Connectサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-126 メッセージ・データ・フィールド
|
|
|
|
|
|
|
文字数制限内に収まるように切り捨てられたキュー名。
|
|
|
|
|
|
|
|
|
|
|
|
Oracle MessageQ用に予約されています。
|
注意: |
変数attach_flag はint型として扱います。 |
引数
表2-127 引数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSG_TYPE_LIST_ALL_ENTRIES
|
関連項目
-
LIST_ALL_ENTRIESリクエスト・メッセージ
-
LIST_ALL_GROUPS (リクエスト)
-
LIST_ALL_GROUPS (レスポンス)
-
LIST_ALL_CONNECTIONS (リクエスト)
-
LIST_ALL_CONNECTIONS (レスポンス
)
LIST_ALL_GROUPS (リクエスト)
アプリケーションは、LIST_ALL_GROUPSメッセージをConnectサーバーに送信することによって、メッセージ・キューイング・バス上のすべてのグループの一覧をリクエストできます。このリクエストに対する応答は、グループの情報が含まれるメッセージと同じタイプおよびクラスの可変長メッセージです。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間接続、エントリおよびグループの一覧表示」のトピックを参照してください。
注意: |
このメッセージはRISCアラインされています。 |
C メッセージ構造
ありません。
メッセージ・データ・フィールド
ありません。
引数
関連項目
- LIST_ALL_GROUPSレスポンス・メッセージ
- LIST_ALL_CONNECTIONS (リクエスト)
- LIST_ALL_CONNECTIONS (レスポンス)
- LIST_ALL_ENTRIES (リクエスト)
- LIST_ALL_ENTRIES (レスポンス)
LIST_ALL_GROUPS (レスポンス)
アプリケーションはLIST_ALL_GROUPSメッセージをConnectサーバーに送信して、メッセージ・キューイング・バス上の接続済および未接続のすべてのグループの一覧をConnectサーバーにリクエストできます。このリクエストに対する応答は、グループの情報が含まれるメッセージと同じタイプおよびクラスの可変長メッセージです。戻された情報を読み取るには、アプリケーションは応答の合計バイト数を計算し、18バイトのグループ・エントリの長さで除算し、戻されたレコードの数を判別する必要があります。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間接続、エントリおよびグループの一覧表示」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Connectサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-129 メッセージ・データ・フィールド
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
現在のDECnetノード名。これは、TCP/IPノード名とすることも可能です。6文字を超えるTCP/IPノード名は切り捨てられます。
|
|
|
|
|
|
|
|
Oracle MessageQ用に予約されています。
|
引数
関連項目
- LIST_ALL_GROUPSリクエスト・メッセージ
- LIST_ALL_CONNECTIONS (リクエスト)
- LIST_ALL_CONNECTIONS (レスポンス)
- LIST_ALL_ENTRIES (リクエスト)
- LIST_ALL_ENTRIES (レスポンス)
LIST_ALL_Q_REQ
LIST_ALL_Q_REQメッセージはキュー・サーバーに送信され、ローカルおよびリモート・グループの、アタッチされたすべての永続キューおよび一時キューのリストをリクエストします。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ内でアタッチされているキューの一覧表示」のトピックを参照してください。
注意: |
注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、キュー・サーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
引数
関連項目
LIST_ALL_Q_RESP
LIST_ALL_Q_RESPメッセージはキュー・サーバーに送信され、ローカルおよびリモート・グループの、すべての永続キューおよびアタッチされたすべての一時キューのリストを提供します。この情報は、LIST_ALL_Q_REQメッセージをキュー・サーバーに送信してリクエストされたものです。このレスポンス・メッセージにはキュー名の長いリストが含まれている可能性があるため、アプリケーションは戻された情報を格納できる十分なバッファ・サイズを割り当てる必要があります。このメッセージの使用方法の説明は、第5章「メッセージベース・サービスの使用」の「グループ内でアタッチされているキューの一覧表示」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、キュー・サーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-133 メッセージ・データ・フィールド
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
キュー・タイプ(数値エンコードされたP、S、M)。
|
|
|
|
キューがアクティブであることを示すブール・フラグ。
|
|
|
|
キューがアタッチされていることを示すブール・フラグ。
|
|
|
|
キュー所有者のプロセスID (PID)。Windows NTシステムでは、スレッド識別子が戻されます。
|
引数
関連項目
LOCATE_Q_REP
pams_locate_q
関数は、キュー名のキュー・アドレスをリクエストします。この関数が非同期で実行されると、結果はLOCATE_Q_REPメッセージ内に戻されます。このメッセージには、検索リスト内の名前が見つかった場所、操作のステータス、ユーザーが設定できるタグ、および名前に関連付けられているキュー・アドレスが示されます。
注意: |
このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
引数
MRS_ACK
MRS_ACKメッセージは、非ブロック・リクエストが発行された場合に、配信インタレスト・ポイントでリカバリ可能メッセージの配信を確認します。配信モードがPDEL_MODE_AK_DQF、PDEL_MODE_AK_SAFまたはPDEL_MODE_AK_CONFに指定されている場合、pams_put_msgリクエストに応答します。送信操作のステータス・コードは、PAMSステータス・ブロック(PSB)と、リカバリ可能メッセージが読み取られたときにpams_get_msg、pams_get_msgaおよびpams_get_msgw関数に戻される引数値から抽出されます。psbおよびuma引数のステータス・コードは、この説明のステータス・コードの項で示されています。
注意: |
このメッセージはRISCアラインされています。 |
C メッセージ構造
ありません。
メッセージ・データ・フィールド
ありません。
引数
ステータス・コード
表2-138 ステータス・コード
|
|
|
メッセージをリカバリできません。宛先キュー・ファイル(DQF) I/Oが失敗しました。
|
|
|
|
メッセージをリカバリできません。MRSリソースが不足しています。
|
|
メッセージをリカバリできません。ターゲット・キューのDQFがありません。
|
|
メッセージをリカバリできません。ターゲット・キューのSAFファイルがありません。
|
|
メッセージをリカバリできません。SAF I/Oが失敗しました。
|
|
先入れ/先出し(FIFO)の順序を維持するために、メッセージはSAFファイルに書き込まれています。
|
|
MRSアクションが完了する前に送信タイムアウトの期限が切れました。
|
|
メッセージはストア・アンド・フォワード(SAF)ファイル内でリカバリ可能です。(配信モードは、
|
UMAステータス
表2-139 UMAステータス
|
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DISCでした。メッセージが破棄されました。
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DISCでした。メッセージを破棄できませんでした。
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DISCでした。リカバリ能力の障害がログに記録された後にメッセージが破棄されました。
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DISCでした。リカバリ能力の障害をログに記録できなかったか、メッセージを破棄できませんでした。
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLJでした。メッセージが使用不要のレター・ジャーナル(DLJ)に書き込まれました。
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLJでした。使用不能のレター・ジャーナルの書込みが失敗しました。
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLQでした。メッセージが配信不能キューにキューイングされました。
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLQでした。メッセージが配信不能キューにキューイングできませんでした。
|
|
メッセージはリカバリ可能です。配信不可メッセージ・アクション(UMA)は実行されませんでした。
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_RTSでした。メッセージが送信元に戻されました。
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_RTSでした。メッセージを送信元に戻すことができませんでした。
|
|
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_SAFでした。メッセージはSAFファイルからリカバリ可能です。
|
|
メッセージをDQF内でリカバリできません。UMA was PDEL_UMA_SAFでした。SAFの書込みが失敗しました。
|
MRS_JRN_DISABLE
実行中のメッセージ・キューイング・グループのジャーナリングを無効化します。このサービスは、補助ジャーナルにフェイルオーバーする前にジャーナリングを無効化するために使用されます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「PCJファイルへのジャーナリングの制御」のトピックを参照してください。このサービスは、OpenVMSシステムでのみ使用可能です。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、MRSサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-140 メッセージ・データ・フィールド
|
|
|
|
|
|
|
フォーマット・バージョン番号。0である必要があります。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
引数
関連項目
-
MRS_JRN_DISABLE_REP
-
MRS_JRN_ENABLE
-
MRS_JRN_ENABLE_REP
MRS_JRN_DISABLE_REP
アプリケーションでは、MRSサーバーにMRS_JRN_DISABLEメッセージを送信することによって、実行中のメッセージ・キューイング・グループのジャーナリングの無効化をリクエストできます。MRS_JRN_DISABLE_REPメッセージは、リクエストのステータスを戻します。このサービスは、補助ジャーナルにフェイルオーバーする前に使用されます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「PCJファイルへのジャーナリングの制御」のトピックを参照してください。このサービスは、OpenVMSシステムでのみ使用可能です。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、MRSサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-142 メッセージ・データ・フィールド
|
|
|
|
|
|
|
フォーマット・バージョン番号。0である必要があります。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
引数
表2-143 引数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSG_TYPE_MRS_JRN_ DISABLE_REP
|
関連項目
-
MRS_JRN_DISABLE
-
MRS_JRN_ENABLE
-
MRS_JRN_ENABLE_REP
MRS_JRN_ENABLE
実行中のメッセージ・キューイング・グループのジャーナリングが無効化された後に、MRS_JRN_DISABLEを使用してこれを有効化します。このサービスは、補助ジャーナルにフェイルオーバーする前に使用されます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「PCJファイルへのジャーナリングの制御」のトピックを参照してください。このサービスは、OpenVMSシステムでのみ使用可能です。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、MRSサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-144 メッセージ・データ・フィールド
|
|
|
|
|
|
|
フォーマット・バージョン番号。0である必要があります。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
引数
関連項目
-
MRS_JRN_DISABLE
-
MRS_JRN_DISABLE_REP
-
MRS_JRN_ENABLE_REP
MRS_JRN_ENABLE_REP
アプリケーションでは、実行中のメッセージ・キューイング・グループのジャーナリングが無効化された後、MRSサーバーにMRS_JRN_ENABLEを送信することによって、再有効化をリクエストできます。MRS_JRN_ENABLE_REPメッセージは、リクエストのステータスを戻します。このサービスは、補助ジャーナルにフェイルオーバーする前にMRSとともに使用されます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「PCJファイルへのジャーナリングの制御」のトピックを参照してください。このサービスは、OpenVMSシステムでのみ使用可能です。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、MRSサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-146 メッセージ・データ・フィールド
|
|
|
|
|
|
|
フォーマット・バージョン番号。0である必要があります。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
引数
表2-147 引数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSG_TYPE_MRS_JRN_ENABLE_REP
|
関連項目
-
MRS_JRN_DISABLE
-
MRS_JRN_DISABLE_REP
-
MRS_JRN_ENABLE
Q_UPDATE
アプリケーションは、ENABLE_Q_NOTIFY_REQメッセージを送信することで、ローカルおよびリモートのグループのキューのステータスが変化したときの通知を受信するように登録できます。ENABLE_Q_NOTIFY_RESPメッセージは、すべてのアクティブなキューのリストを配信し、その後にQ_UPDATEメッセージを使用してアタッチ、デタッチ、またアクティブおよび非アクティブへのステータス変更をアプリケーションに通知します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「アタッチメント通知の受信」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、キュー・サーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-148 メッセージ・データ・フィールド
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
キュー・タイプ(数値エンコードされたP、S、M)。
|
|
|
|
キューがアクティブであることを示すブール・フラグ。
|
|
|
|
キューがアタッチされていることを示すブール・フラグ。
|
|
|
|
|
引数
関連項目
-
ENABLE_Q_NOTIFY_REQ
-
ENABLE_Q_NOTIFY_RESP
-
DISABLE_Q_NOTIFY_REQ
-
DISABLE_Q_NOTIFY_RESP
SBS_DEREGISTER_REQ
MOTおよび配信キューの完全一致によって、または登録IDによって、SBS登録解除をリクエストします。このサービスは、SBS_DEREGサービスのかわりに使用されます。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、SBSサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-150 メッセージ・データ・フィールド
|
|
|
|
|
|
|
メッセージのフォーマット・バージョン番号。40である必要があります。
|
|
|
|
|
|
|
|
プログラムが登録を解除するMOTブロードキャスト・ストリーム。未使用の場合は0。
|
|
|
|
登録の配信キューのOracle MessageQアドレス。キュー・アドレスのグループ番号部分のゼロは、自動的に送信元のグループ番号と置き換えられます。
|
|
|
|
登録解除する登録リクエストのID。未使用の場合は0。
|
|
|
|
登録確認応答メッセージが必要な場合は1、それ以外は0。
|
引数
表2-151 引数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSG_TYPE_SBS_ DEREGISTER_REQ
|
関連項目
-
SBS_DEREGISTER_RESP
-
SBS_REGISTER_REQ
-
SBS_REGISTER_RESP
SBS_DEREGISTER_RESP
このレスポンス・メッセージは、指定されたMOTキューおよび配信キューに一致するすべてのエントリのSBSサーバー登録解除を確認します。
このサービスは、SBS_DEREG_ACKサービスのかわりに使用されます。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、SBSサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-152 メッセージ・データ・フィールド
|
|
|
|
|
|
|
メッセージのフォーマット・バージョン番号。40である必要があります。
|
|
|
|
戻されるステータス・コード。有効なコード: PSYM_SBS_SUCCESS = 成功 PSYM_SBS_BADPARAM = 不正なパラメータ PSYM_SBS_NOMATCH = 一致なし
|
|
|
|
|
|
|
|
このMOTまたはターゲットに残っている登録元の数。
|
引数
表2-153 引数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSG_TYPE_SBS_ DEREGISTER_RESP
|
関連項目
-
SBS_DEREGISTER_REQ
-
SBS_REGISTER_REQ
-
SBS_REGISTER_RES
P
SBS_REGISTER_REQ
このリクエスト・メッセージは、ブロードキャスト・メッセージの受信の登録をリクエストします。これは、配信キューに配信されるメッセージが満たす必要がある、0から255個の配信ルールを指定できます。
このサービスは、SBS_REGおよびSBS_REG_EZサービスのかわりに使用されます。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、SBSサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-154 メッセージ・データ・フィールド
|
|
|
|
|
|
|
メッセージのフォーマット・バージョン番号。40である必要があります。
|
|
|
|
|
|
|
|
プログラムが登録を試行するMOTブロードキャスト・ストリーム。
|
|
|
|
ブロードキャスト・ストリームから選択されたすべてのメッセージを受信するOracle MessageQアドレス。
キュー・アドレスのグループ番号部分のゼロは、自動的に送信元のグループ番号と置き換えられます。
|
|
|
|
登録確認応答メッセージが必要な場合は1、それ以外は0。
|
|
|
|
ブロードキャスト・ストリームのシーケンス欠陥通知が必要な場合は1、それ以外は0。
|
|
|
|
配信キューをデタッチするときに登録リクエストをパージする必要がある場合は1、それ以外は0。
|
|
|
|
|
|
|
|
PSEL_ALL_RULES 配信を正常に実行するにはすべてのルールが真である必要がある場合。
PSEL_ANY_RULE いずれかのルールが真であれば配信がトリガーされる場合。
|
*次の項目は、rule_count回繰り返されます*
|
|
|
|
0からMAX_MSG_SIZEの範囲の整数で、データ内のオフセットを指定
|
|
|
|
|
引数
表2-155 引数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSG_TYPE_SBS_REGISTER_REQ
|
関連項目
-
SBS_DEREGISTER_REQ
-
SBS_DEREGISTER_RESP
-
SBS_REGISTER_RESP
SBS_REGISTER_RESP
このメッセージには、SBS_REGISTER_REQサブスクライバ登録に対するレスポンスが示されます。このレスポンスには、ステータス・フィールドが含まれます(成功時は1)。このメッセージには、リクエスト・メッセージで指定されたユーザー・タグ、登録IDおよびMOTアドレスの登録済エントリ数も含まれます。
このサービスは、SBS_REG_REPLYおよびSBS_REG_EZ_REPLYサービスのかわりに使用されます。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、SBSサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-156 メッセージ・データ・フィールド
|
|
|
|
|
|
|
メッセージのフォーマット・バージョン番号。40である必要があります。
|
|
|
|
|
|
|
|
戻されるステータス・コード。有効なコード: PSYM_SBS_SUCCESS = 成功 PSYM_SBS_BADPARAM = 不正なパラメータ PSYM_SBS_RESRCFAIL = リソースの割当てに失敗
|
|
|
|
|
|
|
|
このMOTまたはターゲットに現在登録されているエントリの数。
|
引数
表2-157 引数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MSG_TYPE_SBS_SEQUENCE_ RESP
|
関連項目
-
SBS_DEREGISTER_REQ
-
SBS_DEREGISTER_RESP
-
SBS_REGISTER_REQ
SBS_STATUS_REQ
SBSサーバーは、メッセージベースのステータス・リクエストをサポートします。このリクエストは、サーバーで使用されている各MOTの現在の状態の詳細を取得でき、同様にSBSサーバーを実行している他のOracle MessageQグループとのアクティビティも取得できます。
このリクエスト・メッセージは、メッセージ・クラスPAMSおよびメッセージ・タイプSBS_STATUS_REQで、SBS_SERVERをターゲットにします。メッセージを受信すると、SBSサーバーはリクエストを検証します。リクエストが正しくない場合、レスポンス・メッセージにはエラー・ステータスが含まれます。SBSサーバーは、SBS_STATUS_RESPタイプの応答メッセージで応答します。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、SBSサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-158 メッセージ・データ・フィールド
|
|
|
|
|
|
|
メッセージのフォーマット・バージョン番号。40である必要があります。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0: 応答メッセージの構成後にリモート・サーバー・データのカウンタをリセットしません。
1: 応答メッセージの構成後にリモート・サーバー・データのカウンタをリセットします。
|
引数
表2-159 引数
|
|
|
|
|
|
|
リクエスト元プログラムのプライマリ・キューまたは応答キュー
|
リクエスト元プログラムのプライマリ・キューまたは応答キュー
|
|
|
|
|
|
|
関連項目
SBS_STATUS_RESP
このメッセージは、SBS_STATUS_REQリクエスト・メッセージの処理が成功した後に戻されます。可変形式メッセージであり、固定長部分の任意の数で構成されます。メッセージを解析するために、各可変長セクションにはカウントがあります。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、SBSサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-160 メッセージ・データ・フィールド
|
|
|
|
|
|
|
メッセージのフォーマット・バージョン番号。40である必要があります。
|
|
|
|
|
|
|
|
戻されるステータス・コード。有効なコードは次のとおりです。
PSYM_SBS_SUCCESS = 成功 PSYM_SBS_BADPARAM = 不正なパラメータ PSYM_SBS_NOMATCH = 一致なし
|
|
|
|
|
|
|
|
これが最後のメッセージである場合は1、それ以外は0。
|
*以降のメッセージは、ローカルSBSサーバー・データごとにnum_rec回(最大50レコード)繰り返されます。
|
|
|
|
|
|
|
|
MOTに関連付けられたトランスポート固有アドレス情報。形式は、参照するトランスポートのタイプによって異なります。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
complete_rcvdメッセージに含まれているバイト数。
|
|
|
|
|
|
|
|
|
|
|
|
サイロ全体のフラッシュの原因となったシーケンス欠陥の回数。
|
*トランスポート・レール情報は2回繰り返されます*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*登録元データ: num_reg回繰り返されます*
|
|
|
|
|
|
|
|
|
ローカルSBSサーバーと通信しているリモートSBSサーバーの数。
|
*リモートSBSサーバー・データ: 次のフィールドはnum_groups回繰り返されます*
|
|
|
|
|
|
|
|
ローカルSBSサーバーからリモートSBSサーバーへの再送信リクエスト数。
|
|
|
|
リモートSBSサーバーが処理した再送信リクエスト数。
|
|
|
|
受信が遅かったためにシーケンス欠陥を防ぐことができなかった再送信リクエスト数。
|
|
|
|
|
|
|
|
ローカルSBSサーバーがリモートSBSサーバーに対して処理した再送信リクエスト数。
|
|
引数
表2-161 引数
|
|
|
|
リクエスト元プログラムのプライマリ・キューまたは応答キュー
|
リクエスト元プログラムのプライマリ・キューまたは応答キュー
|
|
|
|
|
|
|
関連項目
TIMER_EXPIRED
TIMER_EXPIREDは、pams_set_timer
関数に対するレスポンス・メッセージです。このメッセージは、プログラムのプライマリ・キューに関連付けられているタイマー・キューに送信されます。pams_set_timer関数の呼出しごとに、タイマーが期限切れになるとき、TIMER_EXPIREDタイプのメッセージが1つ生成されます。
注意: |
このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
表2-162 メッセージ・データ・フィールド
|
|
|
|
|
|
|
pams_set_timer 呼出しで指定されたタイマーID。
|
|
|
|
Oracle MessageQ用に予約されています。
|
引数
UNAVAIL
アプリケーションは、AVAIL_REGメッセージをAvailサーバーに送信することで、ローカルおよびリモートのグループのキューがアクティブまたは非アクティブになったときに通知を受信するように登録します。選択されたグループのキューが非アクティブになると、UNAVAIL通知メッセージが登録済アプリケーションに送信されます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「キューのステータスの取得」のトピックを参照してください。
注意: |
異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Availサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。 |
C メッセージ構造
メッセージ・データ・フィールド
引数
関連項目
-
AVAIL_REG
-
AVAIL_REG_REPLY
-
AVAIL
-
AVAIL_DEREG