| |
| Sun Java System Message Queue 3 2005Q1 기술 개요 | |
2장
Message Queue 소개Message Queue는 JMS 1.1 사양을 준수하는 안정적인 비동기 메시징 서비스입니다. 또한 대규모 엔터프라이즈 배포 요구를 해결하기 위해 Message Queue는 JMS 사양 요구 사항을 능가하는 많은 기능을 제공합니다.
이 장에서는 Message Queue 서비스 구조를 설명하고 엔터프라이즈 특성 및 기능을 소개합니다. 이 장은 다음 내용으로 구성되어 있습니다.
메시지 서비스 구조Message Queue 서비스는 다음 요소로 구성되어 있습니다.
그림 2-1은 이러한 요소들이 함께 작동하는 방식을 보여줍니다.
그림 2-1 Message Queue 서비스 구조
그림과 같이 Message Queue 클라이언트는 Java 또는 C API를 사용하여 메시지를 주고 받습니다. 이러한 API는 브로커와의 연결을 생성하고 요청된 연결 서비스에 적절하게 비트를 패키지화하는 실제 작업을 하는 Java 또는 C 클라이언트 런타임 라이브러리에 구현됩니다. 응용 프로그램이 관리 대상 객체를 사용하는 경우 클라이언트 런타임은 객체 저장소에서 이러한 객체를 찾아서 사용하여 연결을 구성하고 물리적 대상을 찾습니다. 브로커는 메시지 경로를 지정하고 전달합니다. 관리자는 Message Queue 관리 도구를 사용하여 브로커를 관리하고 관리 대상 객체를 객체 저장소에 추가합니다.
다음 절에서 이러한 요소 각각에 대해 간단히 설명합니다.
메시지 서버
메시지 서버는 하나 이상의 브로커로 구성되어 메시지 경로 지정 및 전달을 수행하는 Message Queue 서비스의 핵심입니다.
메시지 서버는 단일 브로커 또는 경로 지정 및 전달 서비스를 수행하기 위해 브로커 클러스터로서 함께 작업하는 브로커 집합으로 구성됩니다. 브로커는 다음 작업을 수행하는 과정입니다.
메시지 서버, 해당 내부 구성 요소 및 수행하는 기능에 대한 자세한 내용은 4장, "메시지 서버"를 참조하십시오.
Message Queue 엔터프라이즈판은 상호 연결된 다중 브로커 인스턴스로 구성되어, 메시지 서버가 메시지 트래픽 볼륨에 따라 작업 크기를 조절할 수 있는 브로커 클러스터의 사용을 지원합니다. 구조 및 클러스터 구성 문제에 대한 자세한 내용은 5장, "브로커 클러스터"를 참조하십시오.
클라이언트 런타임
Message Queue 클러스터는 클라이언트 응용 프로그램에 Message Queue 서비스에 대한 인터페이스를 제공합니다. 클라이언트 런타임은 Message Queue 클라이언트가 메시지를 생성(대상으로 메시지 전송)하고 메시지를 사용(대상으로부터 메시지 검색)하는 데 필요한 모든 작업을 지원합니다.
그림 2-1과 같이 Message Queue 클라이언트 런타임에는 두 가지 언어 구현이 있습니다.
- Java 클라이언트 런타임. JMS API를 구현하고 Message Queue 메시지 서버와 상호 작용하는 데 필요한 모든 객체와 함께 Java 클라이언트 응용 프로그램 및 구성 요소를 제공합니다. 이러한 인터페이스 객체에는 연결, 세션, 메시지, 메시지 생성자 및 메시지 사용자가 포함됩니다.
- C 클라이언트 런타임. Message Queue 서버와 상호 작용하는 데 필요한 C 프로그래밍 인터페이스와 함께 C 클라이언트 응용 프로그램 및 구성 요소를 제공합니다. C 클라이언트 런타임은 JMS API 메시징 모델의 절차상 버전을 지원합니다.
그림 2-2는 Message Queue 클라이언트와 메시지 서버 간 클라이언트 런타임에서 수행하는 주요한 역할을 보여줍니다. 메시지 전달은 클라이언트 런타임과 메시지 서버 간의 상호 작용인데 반해, 메시지 생성 및 사용은 클라이언트와 클라이언트 런타임 간의 상호 작용과 관련됩니다.
그림 2-2 클라이언트 런타임 및 메시징 작업
클라이언트 런타임은 다음 기능을 수행합니다.
다음 하위 절에서는 클라이언트 런타임 기능을 간단히 설명합니다. 클라이언트 런타임 동작의 일부 측면은 연결 팩토리 객체의 등록 정보를 구성하여 사용자 정의할 수 있습니다.
연결 처리
연결 처리 동작을 구성하려면 클라이언트가 연결하려는 브로커의 호스트 이름과 포트 및 원하는 연결 서비스 유형을 지정해야 합니다. 클러스터의 일부인 브로커와 연결된 경우 연결할 주소 목록을 지정해야 합니다. 한 브로커가 온라인이 아닌 경우 클라이언트 런타임은 사용자를 클러스터의 다른 브로커로 연결할 수 있습니다.
엔터프라이즈판에서 클라이언트 런타임은 연결이 실패할 경우 자동으로 브로커에 다시 연결할 수 있습니다. 재연결은 동일한 브로커에 대한 것일 수 있으며, 클라이언트가 클러스터의 일부인 브로커에 연결된 경우 원래 연결과 다른 브로커에 대한 것일 수 있습니다.
브로커 인스턴스가 공유되는 고가용성 영구 저장소(Sun Cluster와 Message Queue의 통합을 통해 사용 가능)를 사용하지 않는 경우, 다른 브로커 인스턴스로 재연결되면 실패한 (또는 연결이 해제된) 브로커가 보유하는 지속성 메시지 및 기타 상태 정보가 손실될 수 있습니다. 즉, 재연결은 연결 페일오버를 제공하지만 데이터 가용성은 제공하지 않습니다.
클라이언트 아이디
응용 프로그램이 유용하다고 인식할 경우 클라이언트 아이디를 아무 연결에나 설정할 수 있는데 영구 가입자를 식별할 수 있도록 설정되어야 합니다.
영구 가입을 추적하기 위해 브로커는 고유한 클라이언트 아이디를 사용합니다. 클라이언트 아이디는 메시지가 주제 대상으로 전달될 시점에 비활성인 영구 가입자를 식별하는 데 사용됩니다. 브로커는 이러한 가입자에게 전달된 메시지를 보관하였다가 가입자가 활성화되면 해당 메시지를 사용할 수 있게 합니다.
따라서 배포된 응용 프로그램에서 영구 가입을 사용할 때마다 클라이언트 식별자를 설정해야 합니다. Message Queue 기능을 사용하면 클라이언트 아이디를 지정할 때 특수 변수 이름 구문을 사용할 수 있으므로 해당 객체가 관리자에 의해 작성되었는지 아니면 프로그램 방식으로 작성되었는지 여부에 상관없이 연결 팩토리 객체에서 얻은 각 연결에 대해 다른 클라이언트 아이디를 얻을 수 있습니다. 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.
사용자에게 메시지 배포
연결을 통해 브로커가 전달한 메시지는 클라이언트 런타임이 수신하고 적절한 Message Queue 세션으로 분배됩니다. 이 경우 메시지는 그림 2-3에 표시된 대로 해당 메시지 사용자가 사용할 수 있도록 대기열에 쌓입니다.
그림 2-3 Message Queue 클라이언트 런타임으로의 메시지 전달
메시지는 각 세션 대기열에서 한 번에 하나씩 동기식(receive() 메소드를 호출하는 클라이언트 스레드를 통해) 또는 비동기식(메시지 수신기 객체의 onMessage() 메소드를 호출하는 세션 스레드를 통해)으로 사용됩니다(세션은 단일 스레드로 구성).
클라이언트 런타임으로 전달된 메시지의 흐름은 사용자 수준별로 측정됩니다. 연결 팩토리 등록 정보를 적절하게 조정하여 한 세션으로 전달된 메시지가 동일한 연결의 다른 세션으로의 메시지 전달에 부정적인 영향을 미치지 않도록 메시지의 흐름을 조절할 수 있습니다.
안정적인 메시지 전달
클라이언트 런타임은 안정적으로 메시지를 전달하는 데 중요한 역할을 합니다. JMS 사양의 클라이언트 확인 및 트랜잭션 모드를 지원하고 안정적인 전달을 보장하기 위해 사용된 다양한 브로커 확인 동작을 제어합니다.
JMS 사양은 여러 수준의 안정성을 위해 제공하는 많은 클라이언트 확인 모드를 설명합니다. 이러한 확인 모드와 Message Queue에 의해 구현되는 추가 모드는 메시지 사용 컨텍스트에서 설명됩니다(클라이언트 확인 참조).
지속성 메시지 및 안정적인 전달 시, 브로커는 일반적으로 단 한 번의 메시지 사용을 보장하기 위해 사용된 작업을 완료했을 때 클라이언트 런타임으로 확인을 보냅니다. 이러한 브로커 확인을 억제하는 연결 팩토리 등록 정보를 사용하면 네트워크 대역폭 및 처리를 줄일 수 있습니다. 하지만 이렇게 브로커 확인을 억제하면 안정적인 전달을 보장하지 못합니다.
메시지 흐름 제어
클라이언트 런타임은 연결에서 메시지 흐름의 게이트키퍼입니다. 연결에서 흐르는 일반 JMS 페이로드 메시지를 비롯하여 Message Queue는 안정적인 전달을 보장하고 연결에서의 메시지 흐름을 관리하며 다른 제어 기능을 수행하는 데 사용되는 다양한 제어 메시지를 보냅니다.
페이로드 메시지와 제어 메시지는 동일한 연결에 대해 경쟁하므로 충돌하여 정체를 일으킬 수 있습니다. 클라이언트 런타임은 구성 가능한 다양한 흐름 제한 및 측정 체계를 적용하여 페이로드 및 제어 메시지의 충돌을 최소화하고 그로 인해 메시지 처리량을 최대화합니다.
메시지 헤더 값 대체
클라이언트 런타임은 메시지의 지속성, 수명 및 우선 순위를 지정하는 JMS 메시지 헤더 필드를 대체할 수 있습니다.
Message Queue에서는 연결 수준에서 메시지 헤더를 대체할 수 있습니다. 지정된 연결 컨텍스트에서 생성된 모든 메시지에 대해 대체 내용을 적용합니다.
메시지 헤더 값을 대체하는 클라이언트 런타임의 기능은 Message Queue 관리자에게 메시지 서버의 자원에 대한 더 많은 제어 권한을 부여합니다. 하지만 이러한 필드를 대체할 경우 응용 프로그램별 요구 사항(예: 메시지 지속성)에 저촉될 위험이 있습니다. 따라서 이러한 기능은 담당 응용 프로그램 사용자 및 설계자와 상의해서 사용해야 합니다.
기타 기능
클라이언트 런타임은 몇 가지 다른 관련 기능을 수행합니다.
관리 대상 객체
관리 대상 객체는 연결 및 대상에 대한 공급자별 구현 및 구성 정보를 캡슐화합니다. 관리 대상 객체는 프로그램 방식으로 작성되거나 관리 도구를 사용하여 작성 및 구성되고 객체 저장소에 저장되며 표준 JNDI 조회 코드를 통해 클라이언트 응용 프로그램에서 액세스할 수 있습니다.
Message Queue는 다음 테이블에 표시된 관리 대상 객체 유형을 제공합니다.
표 2-1 Message Queue 관리 대상 객체 유형
유형
설명
대상
브로커의 물리적 대상을 나타냅니다. 브로커에 있는 물리적 대상의 공급자별 이름을 포함합니다. 메시지 사용자 및/또는 메시지 생성자 객체는 대상 관리 객체를 사용하여 해당 물리적 대상에 액세스합니다.
연결 팩토리
클라이언트 응용 프로그램과 Message Queue 메시지 서버 간에 물리적 연결을 설정합니다. 또한 물리적 연결 동작을 제어하는 Message Queue 클라이언트 런타임을 구성합니다. 연결 팩토리 관리 대상 객체의 속성 값을 설정할 때 설정하는 모든 연결에 적용할 등록 정보를 지정합니다.
XA 연결 팩토리
분산 트랜잭션을 지원하는 물리적 연결을 설정하는 데 사용됩니다(분산 트랜잭션 참조). XA 연결 팩토리 객체는 일반 연결 팩토리 객체와 동일한 속성 집합을 공유하지만 분산 트랜잭션을 지원하는 데 필요한 추가 메커니즘을 활성화합니다.
SOAP 종점
SOAP 메시지의 최종 대상을 식별하며 SOAP 메시지를 수신할 수 있는 서블릿의 URL입니다. SOAP 종점 관리 대상 객체를 구성하여 다중 URL을 지정할 수 있습니다. 또한 객체와 연결된 조회 이름과 객체 저장소 속성을 지정합니다.
JNDI를 통해 관리 대상 객체 사용
JMS 사양에서는 JMS 클라이언트가 JNDI 이름 공간에서 관리 대상 객체를 조회할 것을 요구하지는 않지만, 그렇게 할 경우 뚜렷한 장점이 있습니다. 즉, 단일 제어 소스를 허용하고 다시 코드화할 필요 없이 연결(클라이언트 런타임 동작)을 구성 및 재구성할 수 있으며 다른 JMS 공급자에게 클라이언트를 이식할 수 있습니다.
관리 대상 객체를 사용하면 Message Queue 서비스를 매우 쉽게 제어하고 관리할 수 있습니다.
즉, 관리 대상 객체를 사용하면 Message Queue 관리자는 메시지 서비스 구성 세부 정보를 제어하면서 동시에 클라이언트 응용 프로그램이 공급자 독립성을 갖게 할 수 있습니다.
관리 대상 객체를 사용한다는 것은 프로그래머가 공급자별 구문과 객체 이름 지정 규약이나 공급자별 구성 등록 정보에 대하여 알 필요가 없음을 의미합니다. 실제로 관리 대상 객체가 읽기 전용이 되게 지정함으로써 관리자는 관리 대상 객체가 처음 작성되었을 때 설정된 관리 대상 객체 속성 값을 클라이언트 응용 프로그램이 변경할 수 없게 할 수 있습니다.
클라이언트 응용 프로그램에서 연결 팩토리와 대상 관리 객체 모두를 자체적으로 인스턴스화할 수 있지만, 이는 관리 대상 객체의 기본 목표에 어긋납니다. Message Queue 관리자는 응용 프로그램에서 필요로 하는 브로커 자원을 제어하고 메시징 성능을 조정해야 합니다. 또한 관리 대상 객체를 직접 인스턴스화하면 클라이언트 응용 프로그램이 공급자에게 종속됩니다.
이러한 주장에도 불구하고 응용 프로그램은 종종 관리 제어가 문제가 되지 않는 개발 환경에서 관리 대상 객체를 인스턴스화합니다.
객체 저장소
Message Queue 관리 대상 객체는 JNDI 조회를 통해 클라이언트 응용 프로그램에서 액세스할 수 있는 객체 저장소(그림 2-1 참조)에 저장됩니다. Message Queue는 두 가지 유형의 객체 저장소, 즉, 표준 LDAP 디렉토리 서버와 파일 시스템 객체 저장소를 지원합니다.
LDAP 서버 객체 저장소 LDAP 서버는 작업 메시징 시스템에 권장되는 객체 저장소입니다. LDAP 구현은 여러 공급업체에서 제공하며 분산 시스템에서 사용할 수 있도록 디자인되어 있습니다. LDAP 서버는 작업 환경에 유용한 보안 기능도 제공합니다.
파일 시스템 객체 저장소 Message Queue는 파일 시스템 객체 저장소를 지원합니다. 이 저장소는 생산 시스템에는 권장되지 않지만 개발 환경에서는 매우 사용하기 쉽다는 장점이 있습니다. LDAP 서버를 설정할 필요 없이 로컬 파일 시스템에 디렉토리를 만들기만 하면 됩니다. 그러나 클라이언트가 여러 컴퓨터 노드에 배포된 경우 이 클라이언트들이 객체 저장소가 위치한 디렉토리에 액세스할 수 없으면 파일 시스템 저장소를 중앙 집중식 객체 저장소로 사용할 수 없습니다.
관리 도구
Message Queue 관리 도구는 일련의 명령줄 유틸리티와 그래픽 사용자 인터페이스(GUI) 관리 콘솔로 구성됩니다.
명령줄 유틸리티 Message Queue는 브로커 시작 및 관리, 물리적 대상 작성 및 관리, 관리 대상 객체 관리 그리고 더 전문화된 기타 관리 작업의 수행과 같은 모든 Message Queue 관리 작업을 수행하는 일련의 명령줄 유틸리티를 제공합니다. 모든 명령줄 유틸리티는 공통 형식, 구문 규약 및 옵션을 공유합니다. 명령줄 유틸리티 사용에 대한 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.
관리 콘솔 이 콘솔은 Message Queue 명령줄 유틸리티 기능의 일부를 제공합니다. 관리 콘솔을 사용하여 브로커를 관리하고 물리적 대상을 작성 및 관리하며 관리 대상 객체를 관리할 수 있습니다. 하지만 일부 명령줄 유틸리티의 더욱 전문화된 작업은 수행할 수 없습니다. 예를 들어, 관리 콘솔을 사용하여 브로커를 시작하거나 브로커 클러스터를 작성하거나 사용자 저장소를 관리할 수 없습니다. 이러한 작업은 Message Queue 명령줄 유틸리티를 사용하여 수행해야 합니다.
Message Queue 관리 설명서에서 제공하는 간단한 실습 자습서를 통해 관리 콘솔 기능을 익히고 이 기능을 사용하여 기본적인 작업을 수행하는 방법을 학습할 수 있습니다.
관리 콘솔과 일부 명령줄 유틸리티를 사용하여 브로커 및 물리적 대상을 원격 관리할 수 있습니다.
제품 기능Message Queue 서비스 및 이전 절에서 설명한 구조는 안정적인 비동기식의 유연한 메시지 전달을 위해 JMS 1.1 사양을 완전히 구현합니다. JMS 호환성 관련 문제에 대한 설명서를 보려면 부록 A, "선택적 JMS 기능의 Message Queue 구현"을 참조하십시오.
하지만 Message Queue는 JMS 사양의 요구 사항을 훨씬 능가하는 성능과 기능을 갖추고 있습니다. 이러한 기능을 사용하여 Message Queue는 24시간 중차대한 작업으로 무수히 많은 메시지를 교환하는 많은 수의 분산 구성 요소로 구성된 시스템과 통합할 수 있습니다.
아래에서 설명하는 Message Queue의 엔터프라이즈 기능은 다음과 같은 범주로 분류됩니다.
통합 지원 기능
Message Queue를 사용하면 여러 전송 프로토콜에 대한 지원, Message Queue 서비스에 대한 C 클라이언트 인터페이스, SOAP(XML) 메시지 지원 및 플러그 가능한 J2EE 자원 어댑터를 포함하므로 기업 전체에서 이종 응용 프로그램 및 구성 요소를 통합할 수 있습니다.
다중 전송 지원
Message Queue는 TCP와 HTTP 등의 다양한 전송 방식을 통해 그리고 보안 연결을 사용하여 클라이언트가 Message Queue 메시지 서버와 상호 작용하는 기능을 지원합니다.
HTTP 연결 HTTP 전송을 사용하면 방화벽을 통해 메시지를 전달할 수 있습니다. Message Queue는 웹 서버 환경에서 실행되는 HTTP 터널 서블릿을 사용하여 HTTP 지원을 구현합니다. 클라이언트가 생성하는 메시지는 HTTP에서 방화벽을 통해 터널 서블릿으로 전달됩니다. 터널 서블릿은 HTTP 요청으로부터 메시지를 추출하고 TCP/IP를 통해 메시지를 브로커로 전달합니다. 유사한 방식으로 Message Queue는 HTTPS 터널 서블릿을 사용하여 보안 HTTP 연결을 지원합니다. HTTP 연결 구조에 대한 자세한 내용은 HTTP/HTTPS 지원을 참조하십시오. HTTP/HTTPS 연결 설정 및 구성에 대한 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.
보안 연결 Message Queue는 TCP/IP 및 HTTP 전송을 통해 SSL(Secure Socket Layer) 표준에 기반한 메시지를 안전하게 전송합니다. 이러한 SSL 기반 연결 서비스를 사용하면 클라이언트와 브로커 사이에서 보내는 메시지를 암호화할 수 있습니다.
SSL 지원은 자체 서명한 서버 인증서에 기반합니다. Message Queue는 개인/공용 키 쌍을 생성하고 자체 서명 인증서에 공용 키를 포함시키는 유틸리티를 제공합니다. 이 인증서는 브로커와의 연결을 요청하는 클라이언트로 전달되고 클라이언트는 해당 인증서를 사용하여 암호화된 연결을 설정합니다. 자체 서명한 인증서를 작성하여 SSL 기반 연결 서비스를 사용하는 방법에 대한 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.
C 클라이언트 인터페이스
Message Queue는 Java 언어 메시징 클라언트 지원뿐만 아니라 Message Queue 서비스에 대한 C 언어 인터페이스를 제공합니다. C API를 사용하여 기존 C 응용 프로그램 및 C++ 응용 프로그램은 JMS 기반 메시징에 참여할 수 있습니다. 하지만 Message Queue의 C API를 사용하는 클라이언트는 다른 JMS 공급자로 이식될 수 없습니다.
Message Queue의 C API는 관리 대상 객체와 맵, 스트림 또는 객체 메시지 본문 유형, 분산 트랜잭션 및 대기열 브라우저를 사용한다는 점을 제외하면 표준 JMS 기능의 대부분을 지원하는 C 클라이언트 런타임에서 지원됩니다. 또한 C 클라이언트 런타임은 대부분의 Message Queue 엔터프라이즈 기능을 지원하지 않습니다.
C API의 기능과 C API가 C 데이터 유형 및 함수를 사용하여 JMS 프로그래밍 모델을 구현하는 방식에 대한 자세한 내용은 C 클라이언트용 Message Queue 개발 안내서를 참조하십시오.
SOAP(XML) 메시징 지원
Message Queue는 SOAP(Simple Object Access Protocol) 사양을 준수하는 메시지 생성 및 전달을 지원합니다. SOAP을 사용하면 분산 환경에서 피어 간에 구조화된 XML 데이터 또는 SOAP 메시지를 교환할 수 있습니다. SOAP 메시지는 첨부 파일을 포함할 수도 있는 XML 문서입니다. 이 첨부 파일이 XML 형식일 필요는 없습니다.
SOAP 메시지가 XML로 코드화된다는 사실은 SOAP 메시지가 플랫폼 독립성을 갖게 합니다. 이러한 메시지를 사용하여 레거시 시스템에서 데이터에 액세스하고 엔터프라이즈 간에 데이터를 공유할 수 있습니다. 또한 XML이 제공하는 데이터 통합은 이 기술이 웹 서비스와 같은 웹 기반 컴퓨팅의 특성을 갖게 만듭니다. 방화벽은 SOAP 패킷을 인식하고 SOAP 메시지 헤더에 표시된 정보에 기반하여 메시지를 필터링할 수 있습니다.
Message Queue는 SAAJ(SOAP with Attachments API for Java) 사양을 구현합니다. SAAJ는 SOAP 메시징을 위한 프로그래밍 모델을 지원하고 SOAP 메시지를 구성, 전송, 수신 및 조사하기 위해 사용할 수 있는 Java 객체를 제공하기 위해 구현할 수 있는 응용 프로그래밍 인터페이스입니다. SAAJ는 다음 2가지 패키지를 정의합니다.
Message Queue는 SOAP 메시지를 JMS 메시지로 변환하고 그 역으로도 변환하는 유틸리티를 제공합니다. 이러한 유틸리티를 사용하면 SOAP 메시지를 서블릿에서 수신하여 JMS 메시지로 변환하면 Message Queue 서비스에서 JMS 사용자에게로 전달하고 다시 SOAP 메시지로 변환하여 SOAP 종점으로 전달할 수 있습니다. 즉, Message Queue는 SOAP 종점 간에 안정적으로, 비동기식으로 SOAP 메시지를 교환하는 기능, 더 간단하게는 SOAP 메시지를 Message Queue 가입자에게 게시하는 기능을 지원합니다.
자세한 내용은 Java 클라이언트용 Message Queue 개발 안내서를 참조하십시오.
J2EE 자원 어댑터
Java 2 Platform, Enterprise Edition(J2EE 플랫폼)은 Java 프로그래밍 환경에서 분산된 구성 요소 모델의 사양입니다. J2EE 플랫폼의 요구 사항 중 하나는 분산 구성 요소가 안정적인 비동기식 메시지 교환을 통해 서로 상호 작용할 수 있도록 하는 것입니다. 즉, J2EE 플랫폼은 JMS 지원을 요구합니다.
이러한 지원은 JMS 메시지를 사용할 수 있는 EJB(Enterprise Java Bean) 구성 요소의 특수 유형인 MDB(Message-Driven Bean)를 사용하는 J2EE 프로그래밍 모델에서 제공됩니다. J2EE 호환 Application Server는 JMS 메시징을 지원하는 MDB 컨테이너를 제공해야 합니다. 이 작업은 Application Server에 JMS 자원 어댑터를 플러그인하면 가능합니다. Message Queue는 이러한 자원 어댑터를 제공합니다.
Message Queue 자원 어댑터를 Application Server에 플러그인하면 Application Server 환경에서 배포되고 실행 중인 MDB를 비롯한 J2EE 구성 요소는 내부 및 외부 JMS 구성 요소와 JMS 메시지를 교환할 수 있습니다. 따라서 분산 구성 요소에 강력한 통합 기능을 제공하게 됩니다.
Message Queue 자원 어댑터에 대한 내용은 6장, "Message Queue 및 J2EE"를 참조하십시오.
보안 기능
대부분의 엔터프라이즈 응용 프로그램에서 저장 및 전송 중인 메시지 데이터를 보호하는 것이 중요합니다. Message Queue는 사용자 인증, 자원에 대한 액세스 제어 및 메시지 암호화를 비롯하여 많은 수준에서 보안을 제공합니다.
인증 Message Queue는 사용자의 비밀번호 기반의 인증을 지원합니다. 플랫 파일 또는 LDAP 사용자 저장소에 저장된 비밀번호에 기반하여 메시지 서버에 대한 연결이 사용자에게 허가됩니다. 모든 연결 시도(사용자 및 호스트 컴퓨터)에 대한 정보가 기록되므로 추적할 수 있습니다.
권한 부여 액세스 제어 목록(ACL)을 사용하면 브로커 연결 및 물리적 대상에 대한 액세스에 대해 구성 가능하고 세밀한 제어가 가능합니다. 사용자 및 그룹 액세스가 모두 지원됩니다. 권한 부여는 브로커별로 수행되므로 각 브로커는 서로 다른 액세스 제어 파일을 가질 수 있습니다.
암호화 SSL 지원을 사용하면 메시지 서버와 해당 클라이언트 간의 모든 메시지 트래픽(TCP/IP 또는 HTTP 연결을 통해서든)을 완전한 SSL 구현을 사용하여 암호화할 수 있습니다.
사용자 저장소 채우기, 액세스 제어 목록 관리 및 SSL 지원 설정에 대한 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.
확장성 기능
Message Queue를 사용하면 사용자, 클라이언트 연결 및 메시지 로드가 증가함에 따라 응용 프로그램의 크기를 조정할 수 있습니다.
확장 가능한 연결 용량
Message Queue 브로커는 수 천 개의 연결을 동시에 처리할 수 있습니다. 기본적으로 각 연결은 전용 브로커 스레드에 의해 처리됩니다. 따라서 연결이 유휴 상태일 때도 해당 스레드를 독점하므로 다중 연결이 동일한 스레드를 공유할 수 있도록 연결 서비스를 구성할 수 있습니다. 이러한 공유 스레드 풀 모델은 브로커가 지원할 수 있는 연결 수를 현저하게 증가시킬 수 있습니다. 자세한 내용은 스레드 풀 관리자를 참조하십시오.
브로커 클러스터
브로커를 통해 전달되는 연결 수와 메시지 수가 증가함에 따라 Message Queue 서버에 추가 브로커 인스턴스를 추가하여 추가 로드를 관리할 수 있습니다. 브로커 클러스터는 많은 브로커 인스턴스 간의 클라이언트 연결 및 메시지 전달의 균형을 조정하여 메시지 서버를 크게 확장할 수 있습니다. 브로커 인스턴스는 동일한 호스트에 있거나 네트워크에 분산될 수 있습니다. 클러스터링은 비즈니스 요구가 증대됨에 따라 메시지 처리량을 향상시키고 메시지 대역폭을 확장하기에 이상적인 방법입니다. 브로커 클러스터는 5장, "브로커 클러스터"에서 소개하고 Message Queue 관리 설명서에서 자세히 설명합
니다.다중 사용자로의 대기열 전달
JMS 사양에 따라 대기열 대상의 메시지는 단일 사용자에게로만 전달될 수 있습니다. Message Queue를 사용하면 다중 사용자가 한 대기열을 사용하여 등록할 수 있습니다. 그런 다음 브로커는 메시지를 등록된 여러 사용자에게 분산하여 로드 균형을 조정하고 시스템 크기를 조정할 수 있습니다.
다중 사용자에게로의 대기열 전달 구현은 구성 가능한 로드 균형 조정 방식을 사용합니다. 이 방식을 사용하면 최대 활성 사용자 수 및 실패 시 활성 사용자를 대신하기 위해 대기하는 최대 백업 사용자 수를 지정할 수 있습니다. 또한 로드 균형 조정 메커니즘은 사용자의 현재 용량과 메시지 처리 속도를 고려합니다.
로드 균형 조정 대기열 전달에 대한 자세한 내용은 다중 사용자로의 대기열 전달을 참조하십시오.
가용성 기능
Message Queue는 서비스 중단 시간을 최소화하는 많은 기능을 제공합니다. 이 범위는 오류를 방지하기 위한 메커니즘에서 고가용성을 제공하기 위해 Sun Cluster와의 통합을 가능하게 하는 메커니즘에 이르기까지 다양합니다.
메시지 서비스 안정성
메시지 서비스의 가용성을 보장하는 가장 효과적인 방법 중 하나는 고성능을 제공하고 오류를 최소화하는 서비스를 제공하는 것입니다. Message Queue는 메모리 과부하 또는 성능 정체를 피하는 메커니즘을 제공합니다. 이러한 메커니즘은 메시지 서버와 클라이언트 런타임에서 모두 작동합니다.
메시지 서버 자원 관리 메시지 서버는 메모리 및 CPU 자원에서 제한되므로 대처할 수 없거나 불안정할 수 있는 상태까지 과부하될 수 있습니다. 이러한 경우는 일반적으로 메시지 생성 속도가 사용 속도를 훨씬 능가할 때 발생합니다. 이러한 상황을 피하기 위해 개별 물리적 대상 수준 및 시스템 차원 수준에서 브로커를 구성하여 메모리가 넘치는 것을 방지할 수 있습니다. 자세한 내용은 메모리 자원 관리를 참조하십시오.
클라이언트 런타임 메시지 흐름 제어 또한 Message Queue는 클라이언트 런타임으로 메시지 전달을 제어하는 메커니즘을 제공합니다. 흐름 제어 메커니즘을 사용하여 클라이언트가 메모리를 고갈시키지 않도록 하면서 클라이언트 런타임으로의 메시지 전달을 최적화할 수 있습니다. 자세한 내용은 메시지 흐름 제어를 참조하십시오.
메시지 서버에 자동 재연결
Message Queue는 자동 재연결 기능을 제공합니다. 메시지 서버와 클라이언트 간 연결이 실패하면 Message Queue는 연결 재설정을 시도하면서 클라이언트 상태를 유지합니다. 대부분의 경우 일단 연결이 다시 설정되면 메시지 생성 및 사용이 투명하게 재개됩니다. 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.
Sun Cluster를 통한 고가용성
Message Queue의 브로커 클러스터링은 확장성이 뛰어난 메시지 서버를 제공하지만 클러스터의 한 브로커 인스턴스에서 다른 인스턴스로의 페일오버를 지원하지 않습니다. 하지만 Message Queue는 Sun Cluster 소프트웨어와 통합하여 고가용성 메시지 서버를 제공할 수 있습니다. Message Queue용으로 개발된 Sun Cluster 에이전트를 사용하면 Sun Cluster는 브로커가 실패해도 메시지 서버를 사실상 중단 시간 없이 바로, 투명하게 복원하여 상태 데이터가 전혀 손실되지 않게 합니다.
관리성 기능
Message Queue는 메시지 서비스를 모니터 및 관리하고 메시지 서비스 성능을 조정하는 데 사용할 수 있는 많은 기능을 제공합니다.
강력한 관리 도구
Message Queue는 Message Queue 메시지 서버를 관리하고 대상, 트랜잭션, 영구 가입 및 보안을 관리하기 위한 명령줄 및 GUI 도구를 모두 제공합니다(관리 도구 참조).
또한 Message Queue는 메시지 서버의 원격 모니터링 및 관리를 비롯하여 JMS 관리 대상 객체, 사용자 저장소, 플러그인 JDBC 호환 데이터 저장소 및 자체 서명한 서버 인증서를 관리하는 도구를 지원합니다. 이러한 관리 도구 사용에 대한 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.
메시지 기반 모니터링 API
Message Queue는 사용자 정의 모니터링 응용 프로그램을 작성하는 데 사용할 수 있는 간단한 JMS 기반 모니터링 API를 제공합니다. 이러한 모니터링 응용 프로그램은 특수한 주제 대상에서 메트릭 메시지를 검색하는 사용자입니다. 메트릭 메시지는 Message Queue 브로커에서 제공하는 모니터링 데이터를 포함합니다(메트릭 메시지 생성자(엔터프라이즈판) 참조).
각 메트릭 메시지 유형에서 보고하는 메트릭 수량에 대한 자세한 내용은 메트릭 메시지를 사용할 Message Queue 클라이언트 개발 방법을 설명하는 Java 클라이언트용 Message Queue 개발 안내서를 참조하십시오. 메트릭 메시지 생성을 구성하는 방법에 대한 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.
조정 가능한 성능
Message Queue는 메시지 서버와 클라이언트 런타임을 모두 조정하여 최적의 성능을 얻는 여러 가지 방법을 제공합니다. 주요 자원을 모니터하고 메모리 사용, 스레딩 자원, 메시지 흐름, 연결 서비스, 안정성 매개 변수 및 메시지 처리량과 시스템 성능에 영향을 미치는 기타 요소를 조정할 수 있습니다. 메시지 서비스 성능을 조정하는 방법에 대한 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.
유연한 서버 구성 기능
Message Queue를 사용하여 지속성 객체, 사용자 정보 및 관리 대상 객체를 저장하는 방식을 선택할 수 있습니다.
구성 가능한 지속성
메시지 전달을 보장하기 위해 Message Queue는 메시지를 사용할 때까지 메시지 및 기타 지속성 객체를 저장합니다. Message Queue는 고성능 파일 기반 영구 저장소를 제공할 뿐 아니라 구성 가능한 지속성을 지원합니다. 따라서 Oracle 8i와 같은 내장 또는 외장 JDBC 호환 데이터베이스에 지속성 메시지를 저장할 수 있습니다. 자세한 내용은 지속성 관리자를 참조하십시오.
LDAP 서버 지원
Message Queue는 인증 및 권한 부여를 위해 필요한 관리 대상 객체 및 사용자 정보 모두에 대해 파일 기반 저장 장치를 제공합니다. 하지만 Message Queue는 관리 대상 객체 저장소 및 사용자 저장소에 대한 LDAP 서버 사용도 지원합니다. LDAP 서버는 이러한 정보를 저장하고 검색하는 보다 안전한 표준 방식을 제공하므로 생산 시스템에 권장됩니다. 관리 대상 객체 저장소 및 사용자 저장소에 대한 LDAP 서버 사용에 대한 자세한 내용은 Message Queue 관리 설명서를 참조하십시오.
제품 판Message Queue는 엔터프라이즈판과 플랫폼판의 두 버전으로 사용할 수 있습니다. 두 버전 모두 JMS 사양을 완전히 구현하지만 각각은 다른 기능 집합과 용량을 가집니다. 다음 표에 기능 집합이 비교되어 있습니다. 기능에 대한 설명은 제품 기능을 참조하십시오.
플랫폼판 및 엔터프라이즈판의 사용권 성능은 아래에서 설명합니다.
엔터프라이즈판
Message Queue 엔터프라이즈판을 사용하여 엔터프라이즈 작업 환경에서 메시지 응용 프로그램을 배포하고 실행할 수 있습니다. 엔터프라이즈판은 메시징 응용 프로그램과 구성 요소의 개발 디버깅, 로드 테스트에도 사용할 수 있습니다. 엔터프라이즈판에는 사용되는 CPU 수에 기반하여 무기한 영구 사용권이 있습니다. 사용권은 다중 브로커 메시지 서비스의 브로커 수에 제한이 없습니다.
플랫폼판
Message Queue 플랫폼판의 경우 메시지 서버가 지원하는 클라이언트 연결의 수에 제한이 없습니다. 이 기능은 기본 사용권 또는 90일 시험 사용권과 함께 제공됩니다.
플랫폼판은 Sun 웹 사이트에서 무료로 다운로드할 수 있으며 Sun Java System Application Server 플랫폼과 함께 제공됩니다. 플랫폼판에서 엔터프라이즈판으로 Message Queue를 업그레이드하는 지침은 Message Queue 설치 설명서에서 찾아볼 수
있습니다.
Sun 제품 컨텍스트의 Message QueueMessage Queue는 응용 프로그램에 의해 직접적으로 사용되는 미들웨어일 뿐 아니라 다른 미들웨어 및 Sun에서 제공한 다른 서버 및 응용 프로그램에서도 사용됩니다. 따라서 Message Queue는 Solaris 및 Java Enterprise System에서 제공되고 Sun Java System Application Server에서도 제공되고 있습니다.
Application Server에서 Message Queue는 J2EE 플랫폼이 JMS 공급자에게 제공하는 JMS 요구 사항을 만족시키며 Application Server가 호스트하는 응용 프로그램에 의해 직접적으로 사용됩니다. 자세한 내용은 6장, "Message Queue 및 J2EE"를 참조하십
시오.