3.4.4 TP1/Message QueueまたはMQSeriesへメッセージを送信する

TP1/Message QueueまたはMQSeriesのメッセージキューにメッセージを送信します。

送信したメッセージは,MQMD構造体としてメッセージキューシステムの送信先キューに格納されます。メッセージキューに送信したメッセージは,アプリケーションプログラムで利用できます。

<この項の構成>
(1) メッセージ送信の定義方法
(2) 送信するメッセージの形式
(3) メッセージ送信の定義例
(4) メッセージ送信時の注意事項

(1) メッセージ送信の定義方法

メッセージ送信をJP1/AJS2のアクションとして実行できるようにするには,メッセージ送信パラメーターを指定します。

メッセージ送信の定義方法は,次の2種類があります。

メッセージ送信パラメーターには,次の項目を指定します。

このほか,必要に応じてモデルキュー名などを指定します。

(2) 送信するメッセージの形式

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のドキュメントを参照してください。

(3) メッセージ送信の定義例

ここでは,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

(4) メッセージ送信時の注意事項

メッセージ送信時の注意事項を次に示します。

送信される相関識別子・メッセージ識別子
送信される相関識別子とメッセージ識別子が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のドキュメントを参照してください。