다음 그림은 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[ ]입니다.
페이로드(payload)
페이로드 유형은 JMS 메시지를 정의합니다. JMS 메시지 유형에 선언된 6개의 JMS 메시지 유형 중 하나가 될 수 있습니다.
JMS는 Wire 형식을 정의하지 않습니다. JMS(Java Message Service) 스펙, 버전 1.1은 메시지 구성 방법에 대한 물리적 표현을 설명합니다.