Sun Java System Message Queue 3.7 UR1 技術の概要

メッセージヘッダー

すべての JMS メッセージにはヘッダーが必要です。ヘッダーには、あらかじめ定義された 10 のフィールドがあります。これらについて、表 2–3 で説明します。

表 2–3 JMS 規定のメッセージヘッダー

ヘッダーフィールド 

説明 

JMSDestination

メッセージを送信する送信先オブジェクトの名前を指定します。(プロバイダが設定する)

JMSDeliveryMode

メッセージが持続かどうかを指定します。(デフォルトでプロバイダが設定するか、プロデューサまたは個々のメッセージごとにクライアントが明示的に設定する)

JMSExpiration

メッセージの有効期限を指定します。(デフォルトでプロバイダが設定するか、プロデューサまたは個々のメッセージごとにクライアントが設定する)

JMSPriority

0 (低) から 9 (高) の範囲内で、メッセージの優先度を指定します。(デフォルトでプロバイダが設定するか、プロデューサまたは個々のメッセージごとにクライアントが明示的に設定する)

JMSMessageID

プロバイダのインストールのコンテキスト内で、メッセージに対する一意の ID を指定します。(プロバイダが設定する)

JMSTimestamp

プロバイダがメッセージを受信した時間を指定します。(プロバイダが設定する)

JMSCorrelationID

クライアントが 2 つのメッセージのやりとりを定義できるようにするための値です。(必要に応じてクライアントが設定する)

JMSReplyTo

コンシューマが応答を送信すべき送信先を指定します。(必要に応じてクライアントが設定する)

JMSType

メッセージセレクタが評価できる値です。(必要に応じてクライアントが設定する)

JMSRedelivered

メッセージがすでに配信されたが通知されていないかどうかを指定します。(プロバイダが設定する)

この表からわかるように、メッセージヘッダーフィールドは、さまざまな目的に使用されます。たとえば、メッセージの識別、メッセージのルーティングの設定、メッセージ処理に関する情報の提供などです。

もっとも重要なフィールドの 1 つである JMSDeliveryMode によって、メッセージ配信の信頼性が決まります。このフィールドは、メッセージが持続かどうかを示します。

メッセージヘッダーフィールドにはプロバイダ (ブローカまたはクライアントランタイム) が設定するものも、クライアントが設定するものもあります。メッセージプロデューサは、特定のメッセージング動作を得るために、ヘッダー値を設定する必要が生じる場合があります。メッセージコンシューマは、メッセージがどのようにルーティングされ、どのような追加処理が必要かを認識するために、ヘッダー値を読み込む必要が生じる場合があります。

ヘッダーフィールド (JMSDeliveryMode JMSExpiration および JMSPriority) は、次の 3 つの異なるレベルに設定できます。

これらのフィールドを複数のレベルに設定した場合、コネクションファクトリに対して設定された値は、個々のメッセージに対して設定された値をオーバーライドします。特定のメッセージに対して設定された値は、メッセージのプロデューサに対して設定された値をオーバーライドします。

メッセージヘッダーフィールドに使用する定数名は、実装されている言語によって異なります。詳細は、『Sun Java System Message Queue 3.7 UR1 Developer’s Guide for Java Clients』または『Sun Java System Message Queue 3.7 UR1 Developer’s Guide for C Clients』を参照してください。