JMS 사양에서는 모든 가능성을 고갈시키지 않으면서 기존 MOM 시스템의 많은 요소를 결합하는 표준을 탄생시켰습니다. 즉, 차이점과 추가 확장을 수용할 수 있는 확장 체계를 마련하고자 했습니다. JMS는 개별 공급자가 다양한 메시징 요소를 정의하고 구현할 수 있는 가능성을 남겨 두었습니다. 이러한 요소로는 로드 균형 조정, 표준 오류 메시지, 관리 API, 보안, 기본 와이어 프로토콜, 메시지 저장소 등이 있습니다. 다음 Message Queue: 요소 및 기능 절에서는 Message Queue가 그러한 많은 요소를 구현하고 JMS 사양을 확장하는 방법에 대해 설명합니다.
JMS에서 완전히 정의하지 않은 두 메시징 요소는 연결 팩토리와 대상입니다. 이러한 요소는 JMS 프로그래밍 모델의 기본 요소이지만, 공급자가 이러한 객체를 정의하고 관리하는 방식에 많은 차이가 있으므로 공통 정의를 생성하는 것은 가능하지도 않고 바람직하지도 않습니다. 따라서 이 두 객체는 프로그래밍 방식으로 만들지 않고 관리 도구를 사용하여 만들어 구성하는 것이 일반적입니다. 그러면 두 객체가 객체 저장소에 저장되고 JMS 클라이언트가 표준 JNDI 조회를 통해 액세스할 수 있습니다.
연결 팩토리 관리 대상 객체는 클라이언트를 브로커에 연결하는 데 사용됩니다. 연결 팩토리 관리 대상 객체는 연결 처리, 클라이언트 아이디, 메시지 헤더 대체, 안정성, 흐름 제어 등과 같은 메시징 동작의 특정 측면을 관리하는 공급자별 정보를 캡슐화합니다. 지정된 연결 팩토리에서 파생되는 모든 연결은 해당 팩토리에 대해 구성된 동작을 나타냅니다.
대상 관리 객체는 브로커에서 물리적 대상을 참조하는 데 사용됩니다. 관리 대상 객체는 공급자별 이름 지정(주소 구문) 규약을 캡슐화하고 대상이 사용되는 메시징 도메인(대기열 또는 주제)을 지정합니다.
JMS 클라이언트는 관리 대상 객체를 조회할 필요가 없으며, 이러한 객체를 프로그래밍 방식으로 만들어 브로커의 메모리에 저장할 수 있습니다. 프로토타입을 신속하게 제작하려면 이러한 객체를 프로그래밍 방식으로 만드는 것이 가장 쉽습니다. 그러나 프로덕션 환경에서 배포할 경우에는 중앙 저장소에서 관리 대상 객체를 조회하여 메시징 동작을 훨씬 쉽게 제어하고 관리할 수 있습니다.
관리자는 연결 팩토리 객체에 대해 관리 대상 객체를 사용하여 이러한 객체를 재구성함으로써 메시징 성능을 조정할 수 있습니다. 그러면 다시 코딩 작업을 하지 않고도 성능을 향상시킬 수 있습니다.
관리자는 물리적 대상에 대해 관리 대상 객체를 사용하여 클라이언트에게 사전 구성된 객체에 액세스하도록 요구함으로써 브로커에서 이러한 대상의 증가를 제어할 수 있습니다.
관리 대상 객체는 개발자가 공급자별 구현 세부 정보를 보지 못하도록 차단하고, 개발자가 특정 공급자를 위해 개발하는 코드를 약간만 변경하거나 변경하지 않고 다른 공급자에게 이식할 수 있도록 해 줍니다.
관리 대상 객체를 사용하면 그림 1–5에 표시된 것처럼 기본 JMS 응용 프로그램에 최종 기능 하나가 추가됩니다.
그림 1–5에서는 메시지 제작자와 메시지 소비자가 대상 관리 대상 객체를 사용하여 해당 물리적 대상에 액세스하는 방법을 보여 줍니다. 표시된 단계는 관리자와 클라이언트 응용 프로그램이 이 메커니즘을 사용하여 메시지를 보내고 받기 위해 수행해야 하는 작업을 나타냅니다.
관리자는 브로커에 물리적 대상을 만듭니다.
관리자는 대상 관리 대상 객체를 만든 다음 해당하는 물리적 대상의 이름과 유형(대기열 또는 주제)을 지정하여 객체를 구성합니다.
메시지 제작자는 JNDI 조회 호출을 사용하여 관리 대상 객체를 조회합니다.
메시지 제작자는 대상에게 메시지를 보냅니다.
메시지 소비자는 메시지를 받을 대상 관리 대상 객체를 조회합니다.
메시지 소비자는 대상으로부터 메시지를 받습니다.
연결 팩토리 관리 대상 객체를 사용하는 과정도 비슷합니다. 관리자는 관리 도구를 사용하여 연결 팩토리 관리 대상 객체를 만들어 구성합니다. 클라이언트는 연결 팩토리 객체를 조회한 후 이를 사용하여 연결을 만듭니다.
관리 대상 객체를 사용하면 메시징 처리 과정에 몇 단계가 추가되지만, 메시징 응용 프로그램의 견고성과 이식성이 향상됩니다.