In der folgenden Abbildung ist die JMS-Nachrichtenstruktur dargestellt:
Header
In jeder JMS-Nachricht muss ein Header vorhanden sein, der automatisch zugeordnet wird. Die meisten Werte im Header werden vom JMS-Provider festgelegt, wenn die Nachricht in eine JMS-Zieladresse gestellt wird. Einige Werte können vom JMS-Client bei der Erstellung einer JMS-Sitzung oder bei der Erstellung des Nachrichtenkonsumenten bzw. -produzenten deklariert werden; beispielsweise werden JMSDeliveryMode, JMSExpiration, JMSReplyTo und JMSCorrelationID erstellt, wenn der JMS-Client eine JMS-Sitzung oder den Nachrichtenkonsumenten bzw. -produzenten erstellt.
Die Datenelemente der einzelnen Header enthalten Name/Wert-Paare und können jeden der folgenden Java-Typen haben: BOOLEAN, BYTE, SHORT, CHAR, LONG, INT, FLOAT, DOUBLE, STRING oder BYTE[ ].
Eigenschaften
Die Eigenschaften sind optional und können in die folgenden Teilbereiche aufgeteilt werden:
Eine Java-Anwendung kann anwendungsbezogene Eigenschaften zuordnen, die vor der Zustellung der Nachricht festgelegt werden. Die Eigenschaftennamen haben nur für die sendenden und empfangenden Anwendungen eine Bedeutung.
Jeder JMS-Provider kann proprietäre Eigenschaften definieren, die entweder vom Client oder automatisch vom Provider festgelegt werden können. Provider-bezogene Eigenschaften haben das Präfix JMS_, gefolgt vom Namen des Anbieters und dem spezifischen Eigenschaftennamen. Der JMS-Client von WebSphere MQ setzt beispielsweise die Provider-Eigenschaft auf JMS_IBM_MsgType.
Diese Eigenschaften werden beim Senden einer Nachricht vom JMS-Provider festgelegt. Der JMS-Provider kann festlegen, dass keine, einige oder alle Standardeigenschaften unterstützt werden. Standardmäßige Eigenschaftennamen beginnen mit JMSX; Beispiel: JMSXUserid oder JMSXDeliveryCount.
Die Eigenschaften werden als Name/Wert-Paare behandelt und können jeden der folgenden Java-Typen haben: BOOLEAN, BYTE, SHORT, CHAR, LONG, INT, FLOAT, DOUBLE, STRING oder BYTE[ ].
Nutzdaten
Der Nutzdatentyp definiert die JMS-Nachricht. Er kann einer der sechs JMS-Nachrichtentypen sein, die im Abschnitt JMS-Nachrichtentypen beschrieben werden.
JMS definiert kein physisches Format. In der Java Message Service Specification, Version 1.1 wird die physische Darstellung einer Nachrichtenstruktur beschrieben.