JP1/Automatic Job Management System 2 連携ガイド
TP1/Message QueueまたはMQSeriesのメッセージキューにメッセージを送信します。
送信したメッセージは,MQMD構造体としてメッセージキューシステムの送信先キューに格納されます。メッセージキューに送信したメッセージは,アプリケーションプログラムで利用できます。
- <この項の構成>
- (1) メッセージ送信の定義方法
- (2) 送信するメッセージの形式
- (3) メッセージ送信の定義例
- (4) メッセージ送信時の注意事項
メッセージ送信をJP1/AJS2のアクションとして実行できるようにするには,メッセージ送信パラメーターを指定します。
メッセージ送信の定義方法は,次の2種類があります。
- JP1/AJS2 - Viewの[ジョブネットエディタ]ウィンドウでメッセージキュー送信アクションジョブを定義する。
- ユニット定義ファイルに必要な情報を定義し,ajsdefineコマンドで定義する。
メッセージ送信パラメーターには,次の項目を指定します。
- キュー名
- 相関識別子
- メッセージ識別子
このほか,必要に応じてモデルキュー名などを指定します。
MQMD構造体に格納されるフィールドの内容と値を次の表に示します。
表3-7 メッセージ送信時にMQMD構造体として格納される値
フィールド 内容 値 StrucId 構造体識別子 システムの仮定値 Version 構造体バージョン情報 システムの仮定値 Report 報告オプション MQRO_NONE(報告なし) MsgType メッセージタイプ MQMT_DATAGRAM(非問い合わせメッセージ) Expiry メッセージ保持時間 ユーザー指定 Feedback 報告メッセージ返答コード MQFB_NONE(応答コードなし) Encoding マシンコード形式 キューマネージャーの属性による CodeCharSetId 文字セット識別名 キューマネージャーの属性による Format フォーマット名 ユーザー指定 Priority メッセージ優先度 ユーザー指定 Persistence メッセージ永続性 ユーザー指定 MsgId メッセージ識別子 ユーザー指定 CorrelId 相関識別子 ユーザー指定 BackoutCount ロールバック回数 0 ReplyToQ 応答キュー名 なし ReplyToQMgr 応答キューマネージャー名 キューマネージャーによって設定された値 UserIdentifier ユーザー識別子 なし AccountingToken 課金トークン MQACT_NONE(初期値) ApplIdentityData アプリケーション識別データ
- UNIX版のMQSeries連携の場合:
- 文字列"JPOSENDMQ jposendmq"
- UNIX版のTP1/Message Queue連携の場合:
- 文字列"JPOAOMMQ jpoaommq"
PutApplType 登録アプリケーションタイプ キューマネージャーによって設定された値 PutApplName 登録アプリケーション名 キューマネージャーによって設定された値 PutDate 登録日付 メッセージが送信された日付 PutTime 登録時刻 メッセージが送信された時刻 ApplOriginData 登録元データ 空白
- 注
- MQMD構造体については,TP1/Message Queueと連携する場合はマニュアル「OpenTP1 Version 5 分散トランザクション処理機能 OpenTP1 メッセージキューイング機能TP1/Message Queue 使用の手引」を,MQSeriesと連携する場合はMQSeriesのドキュメントを参照してください。
ここでは,MQSeriesを使った場合のメッセージ送信の定義例を説明します。
この例でのシステム構成を次の図に示します。
図3-7 メッセージ送信の定義例
この図の例での,メッセージ送信の定義例を説明します。
- 他ホストにメッセージを送信する場合の例
- JP1/AJS2 - Managerホストにあるデフォルトキュー管理プログラム(QM1)で認識できる,他ホストのキュー管理プログラム(RQM)のキュー(RQMQ)へメッセージを送信する場合の定義内容を次の表に示します。
表3-8 他ホストにメッセージを送信する定義例
項目名 定義内容 キュー名 RQMQ 相関識別子 CORRELATION メッセージ識別子 MES01 キュー管理プログラム名 RQM 形式名 TESTFORM メッセージデータファイル名 /usrdisk/user/msg_queue デッドレターキュー(送達不能キュー)名 DEADQUEUE 存続時間 120 優先順位 1 持続性 なし
- 自ホストのメッセージキューにメッセージを送信する場合の例
- 自ホストのキュー管理プログラム(QM2)のキュー(QM2Q)にメッセージを送信する場合の定義内容を次の表に示します。
表3-9 自ホストにメッセージを送信する定義例
項目名 定義内容 キュー名 QM2Q 相関識別子 CORRELATION メッセージ識別子 MES02 接続キュー管理プログラム名 QM2
メッセージ送信時の注意事項を次に示します。
- 送信される相関識別子・メッセージ識別子
- 送信される相関識別子とメッセージ識別子が24バイト未満の場合は,ASCIIではNULL(「00」)で,EBCDICでは半角スペース(「40」)で不足分を埋めて送信されます。送信先で,相関識別子またはメッセージ識別子を使用して受信するように設定されている場合は,この形式で送信したメッセージを受信できるように設定しておいてください。
- メッセージ送信失敗時のデッドレターキュー(送達不能キュー)へのメッセージ送信
- 環境設定でデッドレターキュー(送達不能キュー)が定義されている場合,次のような事象が発生すると,デッドレターキュー(送達不能キュー)にメッセージが送信されます。
- 指定されたメッセージキューのオープンに失敗した。
- 指定されたメッセージキューへのメッセージ送信に失敗した。
- なお,1回目の処理で,デッドレターキュー(送達不能キュー)への送信が失敗した場合,送信処理が再実行されます。ただし,TP1/Message QueueまたはMQSeriesで「キュー管理プログラムと接続不能」または「使用可能なハンドルがなくなった」のエラーが発生した場合を除きます。
- また,デッドレターキュー(送達不能キュー)に最大値以上のメッセージが格納されている場合,デッドレターキュー(送達不能キュー)へ送信できません。定期的にデッドレターキュー(送達不能キュー)を管理してください。
- デッドレターキュー(送達不能キュー)に送信されるメッセージに設定される値を次の表に示します。
表3-10 デッドレターキュー(送達不能キュー)に送信されるメッセージの値
フィールド 内容 設定される値 StrucId 構造体識別子 システムの仮定値 Version 構造体バージョン情報 システムの仮定値 Reason デッドレターキュー(送達不能キュー)になった理由 指定されたキューのMQOPEN,またはMQPUTの理由コード DestQName 送信元の宛先キュー名 -qオプションで指定されたキュー名 DestQMgrName 送信元の宛先キューマネージャー名 -uオプションで指定されたキューマネージャー名 Encoding 送信元のマシンコード形式 送信したメッセージのマシンコード形式 CodedCharSetId 送信元の文字セット識別名 送信したメッセージの文字セット識別名 Format 送信元のフォーマット名 送信したメッセージのフォーマット名 PutApplType デッドレターキュー(送達不能キュー)にメッセージを出力するアプリケーションタイプ 初期値 PutApplName デッドレターキュー(送達不能キュー)にメッセージを出力するアプリケーションの名前 初期値 PutDate メッセージがデッドレターキュー(送達不能キュー)に出力された日付 デッドレターキュー(送達不能キュー)へのメッセージ送信時に求めた日付 PutTime メッセージがデッドレターキュー(送達不能キュー)に出力された時間 デッドレターキュー(送達不能キュー)へのメッセージ送信時に求めた時間
- 注
- 格納される初期値や仮定値については,TP1/Message Queueと連携する場合はマニュアル「OpenTP1 Version 5 分散トランザクション処理機能 OpenTP1 メッセージキューイング機能 TP1/Message Queue MQI 解説・文法編」を,MQSeriesと連携する場合はMQSeriesのドキュメントを参照してください。
Copyright (C) 2006, 2010, Hitachi, Ltd.
Copyright (C) 2006, 2010, Hitachi Software Engineering Co., Ltd.