Sun Java System Message Queue 3.7 UR1 기술 개요

메시지

메시지는헤더, 등록 정보 및 본문으로 구성됩니다.이 구조를 이해해야 메시지를 적절하게 작성하고 특정 메시징 동작을 구성할 수 있습니다.

메시지 헤더

헤더는 모든 JMS 메시지에서 필수입니다. 헤더에는 10개의 사전 정의된 필드가 포함되어 있습니다. 이러한 필드에 대한 목록과 설명은 표 2–3을 참조하십시오.

표 2–3 JMS 정의 메시지 헤더

헤더 필드 

설명 

JMSDestination

메시지를 보낼 대상 객체의 이름을 지정합니다. (공급자가 설정)

JMSDeliveryMode

메시지가 지속성 메시지인지 여부를 지정합니다. (기본적으로 공급자가 설정하거나, 클라이언트가 제작자 또는 개별 메시지에 대해 명시적으로 설정)

JMSExpiration

메시지가 만료되는 시간을 지정합니다. (기본적으로 공급자가 설정하거나, 클라이언트가 제작자 또는 개별 메시지에 대해 설정)

JMSPriority

0(낮음)-9(높음) 범위에서 메시지의 우선 순위를 지정합니다. (기본적으로 공급자가 설정하거나, 클라이언트가 제작자 또는 개별 메시지에 대해 명시적으로 설정)

JMSMessageID

공급자 설치 컨텍스트 내에서 메시지에 대한 고유 아이디를 지정합니다. (공급자가 설정)

JMSTimestamp

공급자가 메시지를 받은 시간을 지정합니다. (공급자가 설정)

JMSCorrelationID

클라이언트가 두 메시지 간의 통신을 정의하는 데 사용하는 값(클라이언트가 필요에 따라 설정)

JMSReplyTo

소비자가 회신을 보낼 대상을 지정합니다. (클라이언트가 필요에 따라 설정)

JMSType

메시지 선택기에서 평가할 수 있는 값(클라이언트가 필요에 따라 설정)

JMSRedelivered

메시지가 이미 전달되었지만 확인되지 않았는지 여부를 나타냅니다. (공급자가 설정)

이 표에서 알 수 있듯이 메시지 헤더 필드는메시지 식별, 메시지 라우팅 구성, 메시지 처리 정보 제공과 같은 다양한 목적으로 사용됩니다.

가장 중요한 필드 중 하나인 JMSDeliveryMode가 메시지 전달의 안정성을 결정합니다. 이 필드는 메시지가 지속성 메시지인지 여부를 나타냅니다.

일부 메시지 헤더 필드는 공급자(브로커 또는 클라이언트 런타임) 또는 클라이언트에 의해 설정됩니다. 메시지 제작자는 특정 메시징 동작을 가져올 헤더 값을 구성해야 합니다. 메시지 소비자는 헤더 값을 읽고 메시지 경로가 지정된 방법과 향후의 메시지 처리에 필요한 내용을 이해해야 합니다.

헤더 필드(JMSDeliveryMode, JMSExpirationJMSPriority)는 세 가지 수준에서 설정할 수 있습니다.

이러한 필드가 여러 수준으로 설정되는 경우, 연결 팩토리에 설정된 값이 개별 메시지에 설정된 값을 대체하며 주어진 메시지에 설정된 값이 메시지 제작자에 설정된 값을 대체합니다.

메시지 헤더 필드의 이름은 언어 구현에 따라 다릅니다. 자세한 내용은 Sun Java System Message Queue 3.7 UR1 Developer’s Guide for Java Clients 또는 Sun Java System Message Queue 3.7 UR1 Developer’s Guide for C Clients를 참조하십시오.

메시지 등록 정보

메시지는 등록 정보 이름과 등록 정보 값 쌍으로 지정되는 등록 정보라는 선택적 헤더 필드를 포함할 수도 있습니다. 클라이언트와 공급자는 이 등록 정보를 통해 메시지 헤더를 확장할 수 있으며, 등록 정보에는 클라이언트나 공급자가 메시지를 식별하여 처리하는 데 유용한 정보가 들어 있을 수 있습니다. 수신 클라이언트는 메시지 등록 정보를 사용하여 지정된 기준에 맞는 메시지만 전달하도록 요청할 수 있습니다. 예를 들어 소비자 클라이언트는 뉴저지에 있는 시간제 직원에 대한 급여 메시지에 대해서만 관심 분야를 표시할 수 있습니다. 공급자는 지정된 기준에 맞지 않는 메시지를 전달하지 않습니다.

JMS 사양에서는 아홉 가지 표준 등록 정보를 정의합니다. 이러한 등록 정보 중 일부는 클라이언트가, 다른 일부는 공급자가 설정합니다. 등록 정보의 이름은 예약된 문자 "JMSX"로 시작됩니다.클라이언트나 공급자는 이러한 등록 정보를 사용하여 메시지를 보낸 사람, 메시지 상태, 메시지 전달 빈도, 메시지가 전달된 시간 등을 확인할 수 있습니다. 이러한 등록 정보를 통해 공급자는 메시지 경로를 지정하고 진단 정보를 제공할 수 있습니다.

Message Queue에서는 메시지 등록 정보도 정의합니다. 메시지 등록 정보는 메시지를 전달할 수 없을 경우의 메시지 처리 방법과 압축된 메시지를 식별하는 데 사용됩니다. 자세한 내용은 Sun Java System Message Queue 3.7 UR1 Developer’s Guide for Java ClientsManaging Message Size를 참조하십시오.

메시지 본문

메시지 본문에는 클라이언트가 교환하고자 하는 데이터가 포함되어 있습니다.

표 2–4에 나와 있는 것처럼 JMS 메시지의 유형에 따라 본문에 포함되는 내용과 소비자가 본문을 처리하는 방법이 결정됩니다. 세션 객체에는 각 메시지 본문 유형에 대한 생성 메소드가 포함되어 있습니다.

표 2–4 메시지 본문 유형

유형 

설명 

StreamMessage

본문이 Java 프리미티브 값의 스트림을 포함하는 메시지. 이 메시지는 순차적으로 채워지고 읽혀집니다. 

MapMessage

본문에 일련의 이름-값 쌍을 포함하는 메시지. 항목 순서는 정의되지 않습니다. 

TextMessage

본문에 Java 문자열을 포함하는 메시지(예: XML 메시지) 

ObjectMessage

본문에 일련화된 Java 객체를 포함하는 메시지 

BytesMessage

본문에 해석되지 않은 바이트의 스트림이 포함된 메시지 

Message

헤더와 등록 정보는 있지만 본문이 없는 메시지 

Java 클라이언트는 클라이언트 런타임에서 전송 중인 메시지의 본문을 압축하도록 등록 정보를 설정할 수 있습니다. 소비자측의 Message Queue 런타임에서 메시지를 전달하기 전에 압축을 풉니다.