IBM MQ classes for Java を使用した IBM MQ メッセージ・ヘッダーの処理

さまざまなタイプのメッセージ・ヘッダーを表す Java クラスが提供されています。 2 つのヘルパー・クラスも提供されています。

MQHeader インターフェース

ヘッダー・オブジェクトは MQHeader インターフェースにより記述されます。これはヘッダー・フィールドへのアクセスおよびメッセージ内容の読み書きのための汎用メソッドを提供します。 各ヘッダー・タイプは MQHeader インターフェースを実装する固有のクラスを持ち、それぞれのフィールドの getter メソッドおよび setter メソッドを追加します。 例えば、MQRFH2 ヘッダー・タイプは MQRFH2 クラスにより表され、MQDLH ヘッダー・タイプは MQDLH クラスにより表される、という具合になります。 ヘッダー・クラスは必要なデータ変換を自動的に実行し、指定された任意の数値エンコードまたは文字セット (CCSID) でデータを読み書きできます。

重要: MQRFH2 ヘッダー・クラスは、メッセージをランダム・アクセス・ファイルとして扱います。これは、カーソルをメッセージの先頭に置く必要があることを意味します。 MQRFH、 MQRFH2、MQCIH、MQDEAD、MQIIH、または MQXMIT などの内部メッセージ・ヘッダー・クラスを使用する前に、メッセージをクラスに渡す前に、メッセージのカーソル位置を正しい位置に更新してください。

ヘルパー・クラス

MQHeaderIterator および MQHeaderList の 2 つのヘルパー・クラスは、メッセージ内のヘッダー内容の読み取りとデコード (構文解析) を支援します。
  • MQHeaderIterator クラスは、java.util.Iterator のように機能します。 メッセージ内にさらに多くのヘッダーがあれば、next() メソッドは true を戻し、nextHeader() または next() メソッドは次のヘッダー・オブジェクトを戻します。
  • MQHeaderList は、java.util.List のように機能します。 MQHeaderIterator のように、これはヘッダー内容を構文解析しますが、特定のヘッダーの検索、新規ヘッダーの追加、既存のヘッダーの除去、ヘッダー・フィールドの更新、およびヘッダー内容のメッセージへの書き戻しもできます。 別の方法として、空の MQHeaderList を作成して、それにヘッダー・インスタンスを取り込み、それをメッセージに一度または繰り返し書き込むことができます。
MQHeaderIterator クラスおよび MQHeaderList クラスは、 MQHeaderRegistry 内の情報を使用して、どの IBM® MQ ヘッダー・クラスが特定のメッセージ・タイプおよび形式に関連付けられているかを認識します。 MQHeaderRegistry は、現在のすべての IBM MQ 形式とヘッダー・タイプ、およびそれらの実装クラスに関する知識を使用して構成されます。また、独自のヘッダー・タイプを登録することもできます。
以下の一般的に使用される IBM MQ ヘッダーのサポートが提供されています。
  • MQRFH - 規則およびフォーマット・ヘッダー
  • MQRFH2 -MQRFH と同様、 IBM Integration Busに属するメッセージ・ブローカーとの間でメッセージをやり取りするために使用されます。 メッセージ・プロパティーを含めるためにも使用されます。
  • MQCIH- CICS® ブリッジ
  • MQDLH - 送達不能ヘッダー
  • MQIIH - IMS 情報ヘッダー
  • MQRMH - 参照メッセージ・ヘッダー
  • MQSAPH - SAP ヘッダー
  • MQWIH - 作業情報ヘッダー
  • MQXQH - 伝送キュー・ヘッダー
  • MQDH - 配布ヘッダー
  • MQEPH - カプセル化 PCF ヘッダー
ユーザー固有のヘッダーを表すクラスを定義することもできます。

MQHeaderIterator を使用して RFH2 ヘッダーを取得するには、GetMessageOptions の MQGMO_PROPERTIES_FORCE_MQRFH2 を設定するか、またはキュー・プロパティー PROPCTL を FORCE に設定します。