以下の図は、JMS メッセージ構造を描写しています。
ヘッダー
ヘッダーはすべての JMS メッセージ内に存在する必要があり、自動的に割り当てられます。 ヘッダー内の値のほとんどは、メッセージが JMS 宛先に入れられるときに JMS プロバイダーによって設定されます。 いくつかの値は、JMS クライアントが JMS セッションを作成するとき、 またはメッセージ・コンシューマーやメッセージ・プロデューサーを作成するときに宣言することができます。 例えば、JMSDeliveryMode、JMSExpiration、JMSReplyTo、および JMSCorrelationID は、 JMS クライアントが JMS セッションを作成するとき、またはメッセージ・コンシューマーや メッセージ・プロデューサーを作成するときに作成されます。
各ヘッダーのデータ・エレメントは名前と値の対から構成され、 次の Java タイプのいずれかであることができます: Boolean、byte、short、 char、long、int、float、double、string、または byte[ ]。
プロパティー
プロパティーはオプションであり、以下のサブセクションに分割できます。
Java アプリケーションは、アプリケーション関連のプロパティーを割り当てることができ、 これらはメッセージの配信前に設定されます。 アプリケーションのプロパティー名は、送信アプリケーションおよび受信アプリケーションだけに対して意味を持ちます。
すべての JMS プロバイダーは、クライアントによってまたは自動的にプロバイダーによって設定される、 専有プロパティーを定義できます。 プロバイダー関連のプロパティーは、接頭部に JMS_ があり、 その後にベンダー名および特定のプロパティー名が続きます。 例えば、WebSphere MQ JMS クライアントが設定する プロバイダー・プロパティーは、JMS_IBM_MsgType となります。
これらのプロパティーは、メッセージが送信されるときに JMS プロバイダーによって設定されます。 JMS プロバイダーのベンダーは、標準プロパティーをいずれもサポートしないこと、いくつかの標準プロパティーをサポートすること、またはすべての標準プロパティーをサポートすることを選択できます。 標準プロパティー名は、JMSX で始まります。 例えば、JMSXUserid や JMSXDeliveryCount となります。
プロパティーは名前と値の対として扱われ、 次の Java タイプのいずれかであることができます: Boolean、byte、short、 char、long、int、float、double、string、または byte[ ]。
ペイロード
ペイロード・タイプは、JMS メッセージを定義します。 これはJMS メッセージ・タイプで説明された 6 つの JMS メッセージ・タイプのいずれかとすることができます。
JMS はワイヤー形式を定義しません。 Java Message Service Specification、バージョン 1.1 (Java Message Service Specification, version 1.1)は、メッセージの構造の物理表現について説明しています。