GroupId (MQBYTE24)

物理メッセージが属する特定のメッセージ・グループまたは論理メッセージを識別するために使用されるバイト・ストリングです。GroupId フィールドは、メッセージのセグメント化が許可されている場合にも使用されます。いずれの場合も、GroupId フィールドには非ヌル値が設定され、MsgFlags フィールドには以下に示すフラグのうち 1 つ以上が設定されます。
  • MQMF_MSG_IN_GROUP
  • MQMF_LAST_MSG_IN_GROUP
  • MQMF_SEGMENT
  • MQMF_LAST_SEGMENT
  • MQMF_SEGMENTATION_ALLOWED
上記のフラグが設定されなかった場合、GroupId の値は特殊なヌル値である MQGI_NONE となります。
以下の場合には、アプリケーションが MQPUT または MQGET 呼び出しでこのフィールドを設定する必要はありません。
  • MQPUT 呼び出しで、MQPMO_LOGICAL_ORDER が指定されている場合。
  • MQGET 呼び出しで、MQMO_MATCH_GROUP_ID が指定されていない 場合。
以下、これらの呼び出しをレポート・メッセージ以外のメッセージに使用する場合の推奨方法について説明します。ただし、アプリケーションがさらに制御を要求する場合、または呼び出しが MQPUT1 の場合、アプリケーションは、GroupId に適切な値が設定されていることを確認する必要があります。
メッセージ・グループおよびメッセージ・セグメントは、グループ ID が重複していない場合にのみ正しく処理できます。そのため、アプリケーションごとに固有のグループ ID を生成しないでください 。アプリケーションでは次のいずれかの処理を行ってください。
  • MQPMO_LOGICAL_ORDER が指定されている場合、キュー・マネージャーは、グループに含まれている最初のメッセージまたは論理メッセージのセグメントである最初のメッセージに対して固有のグループ ID を自動的に生成し、残りのメッセージにそのグループ ID を使用します。そのため、アプリケーションが特別なアクションを取る必要はありません。これが、推奨されている手順です。
  • MQPMO_LOGICAL_ORDER が指定されていない 場合、アプリケーションは、キュー・マネージャーにグループ ID を生成するように要求する必要があります。そのためには、グループに含まれているメッセージまたは論理メッセージのセグメントに対して発行する最初の MQPUT 呼び出しまたは MQPUT1 呼び出しで、GroupId を MQGI_NONE に設定します。次に、その呼び出しの出力時にキュー・マネージャーから返されるグループ ID を、グループ内の残りのメッセージまたは論理メッセージのセグメントに使用する必要があります。メッセージ・グループの中にセグメント分割されたメッセージがある場合は、そのグループのすべてのセグメントおよびメッセージに、同じグループ ID を使用する必要があります。

    MQPMO_LOGICAL_ORDER が指定されていない場合、グループに含まれているメッセージおよび論理メッセージのセグメントは任意の順序 (逆順など) で書き込むことができますが、グループ ID は、これらのメッセージのいずれかに対して発行される最初 の MQPUT または MQPUT1 呼び出しにより割り当てられる必要があります。

MQPUT および MQPUT1 呼び出しの入力時にキュー・マネージャーが使用する値については、キューでの物理順序で説明されています。 MQPUT 呼び出しおよび MQPUT1 呼び出しの出力時に、オープンされたオブジェクトが単一キューであり、配布リストではない場合、キュー・マネージャーはこのフィールドに、メッセージと共に送信された値を設定します。オープンされたオブジェクトが配布リストである場合、このフィールドの値は変わりません。後者の場合、生成されたグループ ID をアプリケーションが認識する必要がある場合、アプリケーションは、GroupId フィールドのある MQPMR レコードを提供する必要があります。

MQGET 呼び出しの入力時にキュー・マネージャーが使用する値については、表 2で説明します。MQGET 呼び出しの出力時に、キュー・マネージャーは、このフィールドに、取り出されたメッセージの値を設定します。

以下のような特殊値が定義されます。
MQGI_NONE
グループ ID は指定されません。

値は、フィールドの長さについては 2 進のゼロです。この値は、グループに含まれていないメッセージ (論理メッセージのセグメントではない) で、かつセグメント化が許可されていないメッセージに使用されます。

C 言語の場合、定数 MQGI_NONE_ARRAY も定義されます。これは、MQGI_NONE と同じ値ですが、ストリングではなく文字の配列です。

このフィールドの長さは MQ_GROUP_ID_LENGTH によって指定されます。このフィールドの初期値は MQGI_NONE です。Version が MQMD_VERSION_2 より小さい場合、このフィールドは無視されます。


資料 資料

フィードバック

タイム・スタンプ・アイコン 最終更新: 2018 年 10 月 2 日 (火)
http://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.dev.doc/com.ibm.mq.ref.dev.doc/q097530_.htm fr13170_