La figura siguiente muestra la estructura de mensaje JMS:
Cabecera
Tiene que existir una cabecera en cada mensaje JMS y ésta se asigna automáticamente. El proveedor JMS establece la mayoría de los valores de la cabecera cuando el mensaje se coloca en un destino JMS. El cliente JMS puede declarar algunos valores cuando crea una sesión JMS o cuando crea el consumidor o productor de mensajes; por ejemplo, JMSDeliveryMode, JMSExpiration, JMSReplyTo y JMSCorrelationID se crean cuando el cliente JMS crea una sesión JMS o crea el consumidor o productor de mensajes.
Los elementos de datos de cada cabecera constan de parejas de nombre-valor y puede ser de cualquiera de los siguientes tipos Java: Boolean, byte, short, char, long, int, float, double, string o byte[ ].
Propiedades
Las propiedades son opcionales y se pueden dividir en las subsecciones siguientes:
Una aplicación Java puede asignar propiedades relacionadas con aplicación y éstas se establecen antes de que se entregue el mensaje. Los nombres de propiedad de la aplicación sólo son significativos para las aplicaciones de envío y recepción.
Cada proveedor JMS puede definir propiedades de propiedad que las puede establecer el cliente o bien, de forma automática, el proveedor. Las propiedades relacionadas con proveedor tienen el prefijo JMS_ seguido del nombre de proveedor y del nombre de propiedad específico. Por ejemplo, el cliente JMS de WebSphere MQ establece que la propiedad de proveedor sea JMS_IBM_MsgType.
Estas propiedades las establece el proveedor JMS cuando se envía un mensaje. El proveedor JMS puede elegir no dar soportar a ninguna propiedad estándar, dar soporte a algunas propiedades estándares o dar soporte a todas las propiedades estándares. Los nombres de propiedad estándar empiezan con JMSX; por ejemplo: JMSXUserid o JMSXDeliveryCount.
Las propiedades se manejan como parejas de nombre-valor y puede ser de cualquiera de los tipos Java siguientes: Boolean, byte, short, char, long, int, float, double, string o byte[ ].
Carga útil
El tipo de carga útil define el mensaje JMS. Puede ser de uno de los seis tipos de mensaje JMS que se describen en Tipos de mensaje JMS.
JMS no define un formato físico. La Especificación Java Message Service, versión 1.1 describe la representación física de cómo se estructura un mensaje.