10.5.1 最大メッセージ長の増加
キューマネジャのMaxMsgLength属性は,キューマネジャが処理できるメッセージの最大長を定義します。キューのMaxMsgLength属性は,キューが処理できるメッセージの最大長を定義します。
TP1/Message Queueでは,キューマネジャのMaxMsgLength属性はmqaquemgr定義コマンドの-lオプションで指定します。キューのMaxMsgLength属性はmqaqueatl定義コマンドの-lオプションで指定します。デフォルトの値は両方とも4096000バイトです。
変更するときには,メッセージ長が両方のMaxMsgLength属性値以下になるようにしてください。しかし,既存のメッセージはどちらかのMaxMsgLength属性値よりも長くなることがあります。定義済みキュー(mqamkqueコマンドで作成したキュー)の属性変更は,mqachgqueコマンドで実行してください。
メッセージがキューに長過ぎる場合には,MQRC_MSG_TOO_BIG_FOR_Qが返されます。同様にメッセージがキューマネジャに長過ぎる場合には,MQRC_MSG_TOO_BIG_FOR_Q_MGRが返されます。
この方法は,長大メッセージを処理するのに容易な方法です。ただし,使用前に次に示す項目について検討してから使用してください。
-
キューマネジャ間の画一性が損なわれます。メッセージデータの最大長は,メッセージが登録される各キュー(転送キューを含む)のMaxMsgLength属性によって決定されます。しかし,特に転送キューでは,この値はキューマネジャのMaxMsgLength属性によって制限されることがあります。そのため,リモートキューマネジャにメッセージを転送するときには,メッセージが長過ぎることを判定しにくくなります。
-
システムリソースの使用が増加します。例えば,アプリケーションはより大きなバッファを必要とし,共用領域の使用が増加します。長大メッセージが必要な場合にだけキューの格納先が影響されるようにしてください。
-
チャネルによるバッチ転送に影響があります。長大メッセージもバッチカウント上では1メッセージとして数えられますが,転送に時間が掛かります。そのため,他メッセージの応答時間が増加します。