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 호환 자원 관리자에 대한 다음과 같은 공용 정보가 필요합니다.
xa_switch_t 구조의 이름: sun_my_xa_switch
자원 관리자의 이름: SUN_RM
연결할 MQ C-API 라이브러리: mqcrt
xa_close 문자열 및 형식: 없음
xa_open 문자열 및 형식: ";"으로 구분된 이름=값 쌍
다음과 같은 이름/값 쌍이 지원됩니다.
표 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 클라이언트입니다. |