Priority (MQLONG)

MQPUT および MQPUT1 呼び出しでは、値はゼロ以上でなければなりません。ゼロは、最低の優先順位です。 以下のような特殊値も使用することができます。
MQPRI_PRIORITY_AS_Q_DEF
  • キューがクラスター・キューの場合、メッセージの優先順位は、メッセージが入れられるキューの特定のインスタンスを所有する 宛先 キュー・マネージャーで定義された DefPriority 属性から取られます。 通常、クラスター・キューのすべてのインスタンスの DefPriority 属性の値は同じですが、これは必須ではありません。

    DefPriorityの値は、メッセージが宛先キューに置かれるときにPriorityフィールドにコピーされます。 その後、DefPriorityが変更されても、既にキューに置かれているメッセージは影響を受けません。

  • キューがクラスター・キューでない場合、宛先キュー・マネージャーがリモートであっても、メッセージの優先順位は、 ローカル ・キュー・マネージャーで定義された DefPriority 属性から取得されます。
    キュー名の解決パスに複数の定義がある場合、デフォルトの優先順位は、パスの最初 の定義にあるこの属性の値から取られます。 次のタイプがあります。
    • 別名キュー
    • ローカル・キュー
    • リモート・キューのローカル定義
    • キュー・マネージャー別名
    • 伝送キュー (例えば、DefXmitQNameキューなど)

    DefPriorityの値は、メッセージが書き込まれるときにPriorityフィールドにコピーされます。 その後、DefPriorityが変更されても、既に書き込まれているメッセージは影響を受けません。

MQGET 呼び出しの戻り値は、常にゼロ以上です。値 MQPRI_PRIORITY_AS_Q_DEF は、返されません。

メッセージが、ローカル・キュー・マネージャーでサポートされている最大の優先順位 (この最大値は MaxPriority キュー・マネージャー属性で指定される) より高い優先順位で書き込まれた場合、メッセージはキュー・マネージャーで受け入れられますが、キュー・マネージャーの最大優先順位でキューに入れられます。MQPUT または MQPUT1 呼び出しは、 MQCC_WARNING および理由コード MQRC_PRIORITY_EXCEEDS_MAXIMUM と共に完了します。 ただし、 Priority フィールドには、メッセージを書き込んだアプリケーションによって指定された値が保持されます。

z/OS® で、メッセージ配信順序が MQMDS_PRIORITY、インデックスタイプが MQIT_GROUP_ID のキューに MsgSeqNumber が 1 のメッセージが置かれた場合、キューはメッセージを異なる優先度で処理する可能性があります。 メッセージが優先順位 0 または 1 のキューに入れられた場合は、優先順位 2 が指定されているかのように処理されます。 これは、効率的なグループの完全性テストを可能にするために、このタイプのキューに置かれたメッセージの順序が最適化されるためです。 メッセージ配信シーケンス MQMDS_PRIORITY とインデックスタイプ MQIT_GROUP_ID に関する詳細は 、 MsgDeliverySequence 属性を参照してください。

メッセージに応答する際、アプリケーションは、応答メッセージに対して要求メッセージの優先順位を使用する必要があります。 他の状況では、MQPRI_PRIORITY_AS_Q_DEF を指定すると、アプリケーションを変更することなく優先順位の調整を行うことができます。

これは、MQGET 呼び出しでは出力フィールド、MQPUT および MQPUT1 呼び出しでは入力フィールドです。 このフィールドの初期値は MQPRI_PRIORITY_AS_Q_DEF です。