Nell'immagine riportata di seguito viene descritto l'albero dei messaggi JMS.
Intestazione
Un'intestazione viene assegnata in modo automatico ed è necessario che sia presente in ciascun messaggio JMS. La maggior parte dei valori nell'intestazione viene impostata dal provider JMS quando tale messaggio viene inviato a una destinazione JMS. Alcuni valori possono essere dichiarati dal client JMS quando crea una sessione JMS o quando crea il produttore o il consumatore; ad esempio, JMSDeliveryMode, JMSExpiration, JMSReplyTo e JMSCorrelationID vengono creati quando il client JMS crea una sessione JMS o crea il produttore o il consumatore del messaggio.
Gli elementi dati di ciascuna intestazione includono le coppie nome-valore ed è possibile che siano di uno dei seguenti tipi Java: Boolean, byte, short, char, long, int, float, double, string o byte[ ].
Proprietà
Le proprietà sono facoltative ed è possibile dividerle nelle sezioni secondarie riportate di seguito.
E' possibile assegnare le proprietà correlate dell'applicazione mediante un'applicazione Java e tali proprietà vengono impostate prima della consegna del messaggio. I nomi della proprietà sono significativi solo per l'invio e la ricezione delle applicazioni.
E' possibile definire le proprietà proprietarie mediante ciascun provider JMS e impostarle mediante client o in modo automatico mediante provider. Le proprietà correlate del provider sono composte dal prefisso JMS_ seguito dal nome del fornitore e dal nome della proprietà specifica. Ad esempio, la proprietà del provider viene impostata mediante il client JMS di WebSphere MQ come JMS_IBM_MsgType.
Queste proprietà vengono impostate mediante il provider JMS quando viene inviato un messaggio. Il fornitore del provider JMS dispone della scelta di non supportare proprietà standard, di supportarne alcune o tutte. I nomi di proprietà standard iniziano con JMSX: ad esempio, JMSXUserid o JMSXDeliveryCount.
Le proprietà vengono gestite come coppie nome-valore ed è possibile che siano di uno dei seguenti tipi Java: Boolean, byte, short, char, long, int, float, double, string o byte[ ].
Payload
Il tipo payload definisce il messaggio JMS. E' possibile che sia uno dei sei tipi di messaggio JMS descritti in Tipi di messaggio JMS.
JMS non definisce un file wire format. In Java Message Service Specification, version 1.1 viene descritta la rappresentazione fisica della struttura di un messaggio.