OpenTP1 メッセージキューイング機能 TP1/Message Queue プログラム作成の手引
キューマネジャがメッセージを転送できないとき,キューマネジャはデッドレターキューにメッセージを登録します。このキューはキューマネジャの開始時に定義してください。
キューマネジャと同様にアプリケーションからデッドレターキューを使用できます。キューマネジャオブジェクトをMQOPEN命令でオープンし,DeadLetterQName属性をMQINQ命令で照会することによって,デッドレターキューの名前を調べることができます。
キューマネジャがメッセージをこのキューに登録するとき,メッセージにヘッダを追加します。その形式はMQDLH構造体(デッドレターヘッダ)で定義されます。MQDLH構造体については,マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。このヘッダにはあて先キューの名前やメッセージがデッドレターキューに登録された理由が記載されます。目的のキューにメッセージを登録する前には,問題を解決してヘッダを削除してください。MQDLH構造体が含まれることを示すために,キューマネジャはメッセージ記述子のFormatフィールドを変更します。
ヘッダをメッセージに追加することによって,デッドレターキューへ登録するにはメッセージが長過ぎてしまうことがあります。したがって,少なくともMQ_MSG_HEADER_LENGTHの値の分だけは,デッドレターキューに登録可能なメッセージ長よりもメッセージが短くなるように注意してください。キューに登録可能なメッセージの最大長は,キューのMaxMsgLength属性の値によって決定されます。デッドレターキューについては,この属性がキューマネジャの許容する最大長になるようにしてください。アプリケーションがメッセージを転送できない場合で,メッセージがデッドレターキューへの登録には長過ぎるときには,MQDLH構造体の解説に従って処理してください。
デッドレターキューを監視して,到着したメッセージが処理されるように独自のアプリケーションを用意してください。アプリケーションはトリガで動作させたり,一定間隔で動作させたりします。
データ変換が必要な場合には,MQGET命令にMQGMO_CONVERTオプションを使用するときに,キューマネジャがヘッダ情報を変換します。メッセージを登録するプロセスがMCAの場合には,ヘッダのあとに登録元メッセージのすべてのテキストが続きます。
ただし,TP1/Message Queueでは,MCAからデッドレターキューに登録するメッセージが長過ぎる場合,MQRC_MSG_TOO_BIG_FOR_Qで失敗します。
デッドレターキューの処理はローカルシステムの要件によって異なります。計画時には次に示す項目を参考にして検討してください。
デッドレターキューアプリケーションでは,次に示す項目を一つ以上実行してください。
デッドレターキューから回復したメッセージを処理する方法は二つあります。
All Rights Reserved. Copyright (C) 2006, Hitachi, Ltd.
(C) Copyright International Business Machines Corporation 1993, 2003. All rights reserved.