JMX(Java Management Extensions) 사양에 따라 Message Queue 브로커 구성 및 모니터링을 위한 새로운 API가 추가되었습니다. 이 API를 사용하여 Message Queue 클라이언트 응용 프로그램 내에서 브로커 기능을 프로그래밍 방식으로 구성하고 모니터링할 수 있습니다. 이전 버전의 Message Queue에서는 명령줄이나 관리 콘솔을 통해서만 이 기능에 액세스할 수 있었습니다.
API는 다음 Message Queue 관련 자원을 관리하기 위한 JMX Managed Beans(MBeans) 집합으로 구성됩니다.
메시지 브로커
연결 서비스
연결
대상
메시지 생성자
메시지 사용자
트랜잭션
브로커 클러스터
로깅
JVM(Java Virtual Machine)
이 MBean은 상태 변경 사항이 발생할 때 클라이언트 응용 프로그램이 이 변경 사항을 수신하고 이에 대해 비동기식으로 응답할 수 있도록 해주는 알림뿐 아니라 기본 자원의 상태를 동기식으로 폴링하고 조작하는 데 필요한 속성 및 작업을 제공합니다. 클라이언트 응용 프로그램은 JMX API를 사용하여 다음과 같은 구성 및 모니터링 작업을 수행할 수 있습니다.
브로커의 포트 번호 설정
브로커의 최대 메시지 크기 설정
연결 서비스 일시 중지
연결 서비스에 대한 최대 스레드 수 설정
서비스에서 현재 연결 수 가져오기
연결 삭제
대상 만들기
대상 삭제
대상 자동 만들기 활성화 또는 비활성화
대상에서 모든 메시지 제거
브로커가 시작된 후 대상에서 수신한 누적 메시지 수 가져오기
대기열의 현재 상태(실행 중 또는 일시 중지됨) 가져오기
주제에 대한 현재 메시지 생성자 수 가져오기
영구 가입자의 모든 메시지 제거
현재 JVM 힙 크기 가져오기
JMX API에 대한 소개와 전체 참조 정보에 대해서는 Sun Java System Message Queue 4.1 Developer’s Guide for JMX Clients를 참조하십시오.
JMX API를 지원하기 위한 몇 개의 새로운 브로커 등록 정보가 추가되었습니다(표 1–3 참조). 이 등록 정보는 명령줄에서 Message Queue 명령 유틸리티(imqcmd)를 사용하여 설정할 수 없습니다. 대신, 브로커 유틸리티(imqbrokerd)의 -D 옵션을 사용하여 설정하거나 브로커의 인스턴스 구성 파일(config.properties)에서 직접 편집할 수 있습니다. 또한 이러한 등록 정보의 일부(imq.jmx.rmiregistry.start, imq.jmx.rmiregistry.use, imq.jmx.rmiregistry.port)는 표 1–4에서 설명하는 새로운 브로커 유틸리티 옵션을 사용하여 설정할 수 있습니다. 다음 표에서는 각 옵션을 나열하고 해당 유형 및 용도를 지정 및 설명합니다.
표 1–3 JMX 지원을 위한 새 브로커 등록 정보
imq.jmx.connector.list 등록 정보는 브로커 시작 시 명명된 JMX 커넥터 집합을 만들도록 정의합니다. imq.jmx.connector.activelist는 만들어진 커넥터 집합에서 활성화할 커넥터를 지정합니다. 명명된 각 커넥터에는 다음과 같은 고유 등록 정보 집합이 있습니다.
imq.jmx.connector.connectorName .urlpath |
imq.jmx.connector.connectorName .useSSL |
imq.jmx.connector.connectorName .brokerHostTrusted |
기본적으로 jmxrmi와 ssljmxrmi라고 하는 두 가지 JMX 커넥터가 만들어집니다. 첫 번째 커넥터는 SSL 암호화를 사용하지 않도록 구성되며(imq.jmx.connector.jmxrmi.useSSL = false), 두 번째 커넥터는 이 암호화를 사용하도록 구성됩니다(imq.jmx.connector.ssljmxrmi.useSSL = true). 기본적으로 브로커 시작 시 jmxrmi 커넥터만 활성화됩니다. 보안 통신을 위해 ssljmxrmi 커넥터를 활성화하는 방법에 대한 내용은 JMX 클라이언트에 대한 SSL 지원을 참조하십시오.
편의상 새 옵션(표 1–4)도 RMI 레지스트리에 대한 사용, 시작 및 포트를 제어하기 위해 명령줄 브로커 유틸리티(imqbrokerd)에 추가되었습니다. 이러한 옵션의 사용과 효과는 표 1–3에서 설명하는 것처럼 해당 브로커 등록 정보와 동일합니다. 다음 표에서는 각 옵션을 나열하고 해당 브로커 등록 정보 및 용도를 지정 및 설명합니다.
표 1–4 JMX 지원을 위한 새 브로커 유틸리티 옵션
옵션 |
해당 브로커 등록 정보 |
설명 |
---|---|---|
-startRmiRegistry |
imq.jmx.rmiregistry.start |
브로커 시작 시 RMI 레지스트리를 시작할지 여부를 지정합니다. |
-useRmiRegistry |
imq.jmx.rmiregistry.use |
외부 RMI 레지스트리를 사용할지 여부를 지정합니다. |
-rmiRegistryPort |
imq.jmx.rmiregistry.port |
RMI 레지스트리의 포트 번호입니다. |
브로커 시작 시 작성 및 시작되는 JMX 커넥터의 JMX 서비스 URL을 나열하기 위한 새로운 하위 명령(표 1–5)이 명령줄 명령 유틸리티(imqcmd)에 추가되었습니다. 이 정보는 JMX 커넥터를 가져오는 데 Message Queue 편의 클래스 AdminConnectionFactory를 사용하지 않는 JMX 클라이언트에 필요하며, Java 모니터링 및 관리 콘솔(jconsole)과 같은 일반 JMX 브라우저를 통해 Message Queue를 관리하거나 모니터링하는 데 사용할 수도 있습니다.
표 1–5 새 명령 유틸리티 하위 명령
하위 명령 |
설명 |
---|---|
list jmx |
JMX 커넥터의 JMX 서비스 URL을 나열합니다. |
위에 언급한 바와 같이 Message Queue 메시지 브로커는 기본적으로 사전 구성된 JMX 커넥터 jmxrmi를 사용하므로 보안 통신이 설정되지 않은 상태로 구성됩니다. 응용 프로그램에 보안 통신을 위한 SSL(Secure Socket Layer)을 사용하려면 대신 사용할 수 있는 보안 JMX 커넥터 ssljmxrmi를 활성화해야 합니다. 이 커넥터를 활성화하려면 다음 단계를 수행해야 합니다.
Message Queue 관리 설명서에 설명된 대로 ssljms, ssladmin 또는 cluster 연결 서비스와 동일한 방법으로 서명된 인증서를 가져오고 설치합니다.
필요 시 트러스트 저장소에 루트 인증 기관 인증서를 설치합니다.
브로커 시작 시 활성화될 수 있도록 다음과 같이 JMX 커넥터 목록에 ssljmxrmi 커넥터를 추가합니다.
imq.jmx.connector.activelist=jmxrmi,ssljmxrmi
Message Queue 브로커 유틸리티(imqbrokerd)에 비밀번호 파일의 키 저장소 비밀번호를 전달하거나 프롬프트 창의 명령줄에서 이 유틸리티를 입력하여 브로커를 시작합니다.
기본적으로 ssljmxrmi 커넥터(또는 다른 SSL 기반 커넥터)는 제공되는 모든 브로커 SSL 인증서를 검증하도록 구성됩니다. 이 검증을 수행하지 않으려면(예를 들어, 소프트웨어 테스트 중 자체 서명된 인증서를 사용할 경우) 브로커 등록 정보 imq.jmx.connector.ssljmxrmi.brokerHostTrusted를 true로 설정합니다.
클라이언트 측에서는 다음과 같이 ssljmxrmi를 기본 커넥터로 지정하는 URL로 관리자 연결 팩토리(AdminConnectionFactory)를 구성해야 합니다.
AdminConnectionFactory acf = new AdminConnectionFactory(); acf.setProperty(AdminConnectionConfiguration.imqAddress, "mq://myhost:7676/ssljmxrmi");
필요 시 시스템 등록 정보 javax.net.ssl.trustStore 및 javax.net.ssl.trustStorePassword를 사용하여 JMX 클라이언트가 트러스트 저장소를 가리키도록 설정합니다.