Sun Java System Message Queue 4.2 릴리스 노트

Message Queue 4.2의 새로운 기능

Sun Java System Message Queue는 완벽한 기능의 메시지 서비스로 JMS(Java Messaging Specification) 1.1을 따르는 안정적인 비동기식 메시징을 제공합니다. 또한 Message Queue는 JMS 사양을 능가하는 다양한 기능을 제공하여 대규모 엔터프라이즈 배포 요구를 충족시킵니다.

Message Queue 4.2는 다양한 기능 향상 및 버그 수정이 포함된 부 릴리스입니다. 이 절에서는 Message Queue 4.2 설치 또는 업그레이드 방법과 이 릴리스에 포함된 새로운 기능에 대해 설명합니다.

Message Queue 4.0 및 4.1에 도입된 기능에 대한 자세한 내용은 Message Queue 4.0의 새로운 기능 Message Queue 4.1의 새로운 기능을 각각 참조하십시오.

게시자 또는 가입자를 위한 여러 대상

Message Queue 4.2에서 이제 게시자는 여러 주제 대상에 메시지를 게시할 수 있고 가입자는 여러 주제 대상에서 메시지를 사용할 수 있습니다. 여러 대상을 나타내는 와일드카드 문자가 포함된 주제 대상 이름을 사용하여 이 기능을 수행할 수 있습니다. 이러한 심볼릭 이름을 사용하면 관리자는 필요에 따라 와일드카드 이름 지정 체계에 맞게 추가 주제 대상을 만들 수 있습니다. 게시자와 가입자는 추가된 대상에서 자동으로 메시지를 게시하거나 사용합니다. (와일드카드 주제 가입자가 게시자보다 더 일반적입니다.)


주 –

대기열 대상에는 이 기능이 적용되지 않습니다.


심볼릭 주제 대상의 이름 형식은 여러 세그먼트로 구성되며 와일드카드 문자(*, **, >)는 하나 이상의 이름 세그먼트를 나타낼 수 있습니다. 예를 들어, 다음과 같은 주제 대상 이름 지정 체계가 있다고 가정합니다.

size.color.shape

여기서 주제 이름 세그먼트에는 다음과 같은 값이 있을 수 있습니다.

메시지 대기열에서는 다음과 같은 와일드카드 문자가 지원됩니다.

따라서 다중 주제 대상을 다음과 같이 나타낼 수 있습니다.

large.*.circle은 다음을 나타냅니다.

large.red.circle
large.green.circle
...

**.square.square로 끝나는 모든 이름을 나타냅니다. 예를 들면 다음과 같습니다.


small.green.square
medium.blue.square
...

small.>small.로 시작하는 모든 대상 이름을 나타냅니다. 예를 들면 다음과 같습니다.


small.blue.circle
small.red.square
...

이 다중 대상 기능을 사용하려면 위에 설명한 것과 비슷한 이름 지정 체계를 사용하여 주제 대상을 만들어야 합니다. 그러면 클라이언트 응용 프로그램에서 심볼릭 대상 이름을 사용하여 게시자 또는 사용자를 만들 수 있습니다. 예를 들면 다음과 같습니다.

...
String DEST_LOOKUP_NAME = "large.*.circle";
Topic t = (Destination) ctx.lookup(DEST_LOOKUP_NAME);
TopicPublisher myPublisher = mySession.createPublisher(t)
myPublisher.send(myMessage);
...
String DEST_LOOKUP_NAME = "**.square";
Topic t = (Destination) ctx.lookup(DEST_LOOKUP_NAME);
TopicSubscriber mySubscriber = mySession.createSubscriber(t);
Message m = mySubscriber.receive();

첫 번째 예에서 브로커는 심볼릭 이름 large.*.circle과 일치하는 모든 대상에 메시지 사본을 넣습니다. 두 번째 예에서는 심볼릭 이름 **.square와 일치하는 대상이 하나 이상 있을 경우 가입자가 만들어지고 해당 심볼릭 이름과 일치하는 모든 대상으로부터 메시지를 받습니다. 심볼릭 이름과 일치하는 대상이 없을 경우 해당 대상이 있을 때까지 가입자가 만들어지지 않습니다.

관리자가 심볼릭 이름과 일치하는 추가 대상을 만들면 해당 심볼릭 이름을 사용하여 작성된 와일드카드 게시자가 이 대상에 게시하고, 해당 심볼릭 이름을 사용하여 작성된 와일드카드 가입자는 해당 대상으로부터 메시지를 받게 됩니다.

또한 주제 대상에 대한 게시자(생성자) 및 가입자(사용자)의 전체 수를 보고하는 것 외에도, Message Queue 관리 도구에서는 와일드카드 게시자인 게시자 수(해당되는 심볼릭 대상 이름 포함)와 와일드카드 가입자인 가입자 수(심볼릭 대상 이름 포함)도 보고합니다(있는 경우).

XML 페이로드 메시지의 스키마 검증

Message Queue 4.2의 이러한 새 기능을 통해 브로커로 메시지를 보낼 때 XML 스키마를 기준으로 텍스트(객체 아님) XML 메시지의 내용을 검증할 수 있습니다. XML 스키마(XSD)의 위치는 Message Queue 대상의 등록 정보로 지정됩니다. XSD 위치가 지정되지 않은 경우에는 XML 문서에 있는 DTD 선언을 사용하여 DTD 검증이 수행됩니다. (데이터 유형 및 값 범위 검증이 포함되는 XSD 검증은 DTD 검증보다 더 엄격합니다.)

이러한 새 기능을 사용하는 클라이언트 응용 프로그램의 경우 Java SE 버전을 JRE 1.5 이상으로 업그레이드해야 합니다.

XML 스키마 검증을 사용하려면 다음의 물리적 대상 등록 정보를 설정합니다.

표 1–5 XML 스키마 검증을 위한 물리적 대상 등록 정보

등록 정보 

유형 

기본값 

설명 

validateXMLSchemaEnabled

부울 

false

XML 스키마 검증 사용 여부 

false로 설정되거나 설정되지 않은 경우 대상에 대해 XML 스키마 검증이 사용되지 않습니다.

XMLSchemaURIList

문자열 

null 

XML 스키마 문서(XSD) URI 문자열의 공백으로 구분된 목록 

사용하도록 설정된 경우 URI는 XML 스키마 검증에 사용할 하나 이상의 XSD 위치를 가리킵니다.  

여러 URI를 지정할 경우에는 이 값 주위에 큰 따옴표를 사용합니다. 

예: 

"http://foo/flap.xsd http://test.com/test.xsd"

이 등록 정보가 설정되지 않았거나 null이고 XML 검증이 설정된 경우에는 XML 문서에 지정된 DTD를 사용하여 XML 검증이 수행됩니다. 

reloadXMLSchemaOnFailure

부울 

false

실패 시 XML 스키마 다시 로드 사용 여부 

false로 설정되거나 설정되지 않은 경우 검증에 실패해도 스키마가 다시 로드되지 않습니다. 

XML 검증이 설정된 경우에는 Message Queue 클라이언트 런타임에서 XML 메시지를 브로커로 보내기 전에 지정된 XSD(또는 XSD가 지정되지 않은 경우 DTD)를 기준으로 해당 메시지의 검증을 시도합니다. 지정된 스키마를 찾을 수 없거나 메시지를 검증할 수 없는 경우에는 메시지가 전송되지 않고 예외가 발생합니다.

imqcmd create dst 또는 imqcmd update dst 명령을 각각 사용하여 대상을 만들거나 업데이트할 때 XML 검증 등록 정보를 설정할 수 있습니다. XML 검증 등록 정보는 대상이 비활성 상태인 동안, 즉 사용자나 생성자가 없고 대상에 메시지가 없는 경우에 설정해야 합니다.


주 –

런타임 시 XSD에 액세스할 수 없는 경우에는 대상이 활성 상태인 동안 XMLSchemaURIList를 수정해야 합니다.


대상이 활성 상태인 동안 XML 검증 등록 정보를 설정한 경우(예: 대상에 생성자가 연결된 경우)에는 생성자가 브로커에 다시 연결할 때까지 변경 사항이 적용되지 않습니다. 마찬가지로, 응용 프로그램 요구 사항을 변경한 결과로 XSD가 변경된 경우에는 변경된 XSD를 기반으로 XML 메시지를 생성하는 모든 클라이언트 응용 프로그램이 브로커에 다시 연결되어야 합니다.

reloadXMLSchemaOnFailure 등록 정보가 true로 설정된 상태에서 XML 검증이 실패한 경우에는 Message Queue 클라이언트 런타임에서 XSD를 다시 로드하여 메시지 검증을 다시 시도합니다. 다시 로드된 XSD를 사용해도 검증에 계속 실패할 경우 클라이언트 런타임에서 예외가 발생합니다.

분산 트랜잭션에 대한 C-API 지원

X/Open 분산 트랜잭션 모델에 따르면 분산 트랜잭션에 대한 지원은 하나 이상의 자원 관리자에서 수행되는 작업을 추적 및 관리하는 분산 트랜잭션 관리자에 의해 결정됩니다. Message Queue 4.2에서 Message Queue C-API는 이제 XA 호환 자원 관리자로 분산 트랜잭션 관리자와 Message Queue 간에 XA 인터페이스를 지원하므로 분산 트랜잭션 처리 환경(예: BEA Tuxedo)에서 실행되는 Message Queue C-API 클라이언트는 분산 트랜잭션에 참가할 수 있습니다.

이 분산 트랜잭션 지원은 XA 인터페이스 사양을 구현하는 데 사용되는 다음과 같은 새로운 C-API 함수, 매개 변수 및 오류 코드로 구성됩니다.

MQGetXAConnection()
MQCreateXASession()

분산 트랜잭션 컨텍스트에서 C 클라이언트 응용 프로그램을 사용할 경우 MQGetXAConnection()을 사용하여 연결을 설정하고 MQCreateXASession()을 사용하여 메시지를 생성 및 사용하기 위한 세션을 작성해야 합니다. . 모든 분산 트랜잭션의 시작, 완결 및 롤백은 분산 트랜잭션 관리자에서 제공되는 API를 통해 관리됩니다.

공용 정보

X/Open XA 인터페이스 사양에는 Message Queue XA 호환 자원 관리자에 대한 다음과 같은 공용 정보가 필요합니다.

다음과 같은 이름/값 쌍이 지원됩니다.

표 1–6 Message Queue 자원 관리자 이름/값 쌍

이름 

값 

설명 

기본값 

address 

host:port

브로커 포트 매퍼 서비스의 호스트:포트 

localhost:7676

username 

문자열 

브로커 연결에 필요한 사용자 이름 

guest

password 

문자열 

사용자 이름의 비밀번호 

guest

conntype 

TCP 또는 SSL 

브로커 연결 시의 프로토콜 유형 

TCP

trustedhost 

true/false 

브로커 호스트가 신뢰되는 지의 여부(conntype=SSL에만 적용) 

true

certdbpath 

문자열 

NSS 인증서 및 키 데이터베이스 파일이 포함된 디렉토리의 전체 경로 

설정되지 않음 

clientid 

문자열 

JMS 영구 가입 시에만 필요 

설정되지 않음 

reconnects 

정수 

브로커에 대한 다시 연결 시도 횟수(0은 다시 연결 없음) 

0

프로그래밍 예

분산 트랜잭션을 사용하는 응용 프로그램을 프로그래밍하려면 트랜잭션 관리자 환경에서 실행되는 서버측 서비스와 트랜잭션 관리자 API를 호출하는 클라이언트측 코드를 작성합니다. Message Queue 4.2는 Tuxedo 트랜잭션 관리자에 기반한 프로그래밍 예를 제공합니다. 이러한 예는 각 플랫폼의 ./C/tuxedo 디렉토리에 있는 샘플 프로그램 디렉토리에 있습니다.

이 디렉토리에는 Message Queue 자원 관리자를 사용할 수 있도록 Tuxedo를 설정하고 Tuxedo 환경에 다음 샘플 프로그램을 구축하는 방법을 설명하는 README 파일이 포함되어 있습니다.

샘플 프로그램 

설명 

jmsserver.c

Message Queue를 사용하여 메시지를 보내고 받는 Tuxedo 서비스를 구현합니다. 

jmsclient_sender.c

jmsserver.c 프로그램에서 메시지 생성 서비스를 사용하는 Tuxedo 클라이언트입니다.

jmsclient_receiver.c

jmsserver.c 프로그램에서 메시지 수신 서비스를 사용하는 Tuxedo 클라이언트입니다.

async_jmsserver.c

Message Queue를 사용하여 비동기식으로 메시지를 사용하는 Tuxedo 서비스를 구현합니다. 

jmsclient_async_receiver.c

async_jmsserver.c 프로그램의 비동기식 메시지 사용 서비스를 사용하는 Tuxedo 클라이언트입니다.

Sun Connection 등록을 위한 설치 프로그램 지원

Sun 하드웨어 및 소프트웨어를 추적, 구성 및 유지 관리할 수 있게 해주는 Sun에서 호스트되는 서비스인 Sun Connection에 Message Queue를 등록할 수 있도록 Message Queue 설치 프로그램이 향상되었습니다.

Message Queue 설치 과정 중에 Message Queue를 Sun Connection에 등록하도록 선택할 수 있습니다. 릴리스 버전, 호스트 이름, 운영 체제, 설치 날짜 및 기타 기본 정보 등의 설치된 Message Queue에 대한 정보는 Sun Connection 데이터베이스로 안전하게 전송됩니다. Sun Connection 인벤토리 서비스를 통해 Sun 하드웨어 및 소프트웨어를 구성할 수 있으며 업데이트 서비스는 사용 가능한 최신 보안 수정 사항, 권장 업데이트 및 기능 향상에 대해 알려줍니다.

Message Queue 4.2에 Sun Connection 등록을 위해 다음 설치 프로그램 화면이 추가되었습니다.

Sun Connection 등록 화면입니다.

등록하려면 Sun Online 계정이 있거나, 없는 경우 새로 만들어야 합니다. 계정이 없는 경우 설치 프로그램에서 Sun Online 계정을 만들기 위한 다음 화면이 표시됩니다.

Sun Online 계정을 만들기 위한 화면입니다.

설치 중에 위 화면을 사용하여 Message Queue를 등록하거나 설치가 완료된 후까지 기다렸다가 다음과 같이 등록 전용 모드로 설치 프로그램을 실행할 수 있습니다.

# installer -r

등록 전용 모드는 Message Queue 4.2가 이미 설치되어 있어야 실행할 수 있으며 등록과 관련된 설치 프로그램 화면만 표시합니다.

MySQL 데이터베이스 지원

Message Queue 4.2는 JDBC 기반 데이터 저장소로 MySQL 데이터베이스를 지원합니다. MySQL Cluster Edition은 독립 실행형 브로커의 JDBC 데이터베이스로 사용할 수 있으며, 고가용성 브로커 클러스터에 필요한 고가용성 공유 데이터 저장소로도 사용할 수 있습니다. MySQL을 사용하도록 Message Queue를 구성하는 방법에 대한 자세한 내용은 Sun Java System Message Queue 4.2 Administration GuideConfiguring a JDBC-Based Data StoreSun Java System Message Queue 4.2 Administration GuideHigh-Availability Cluster Properties를 참조하십시오.