클라이언트 응용 프로그램에서 시작하는 모든 트랜잭션은 브로커에서 추적됩니다. 이는 단순한 Message Queue 트랜잭션일 수도 있고 분산 트랜잭션(XA 자원) 관리자가 관리하는 분산 트랜잭션일 수도 있습니다.
모든 트랜잭션에는 브로커의 트랜잭션을 고유하게 나타내는 64비트 숫자 즉, Message Queue 트랜잭션 아이디가있습니다. 분산 트랜잭션에도 분산 트랜잭션 관리자가 할당하는 최대 128바이트의 분산 트랜잭션 아이디(XID)가 있습니다. Message Queue에서는 Message Queue 트랜잭션 아이디와 XID 사이의 연결을 보존합니다.
분산 트랜잭션에 오류가 발생하면 그 트랜잭션은 PREPARED 상태로 남아 완결되지 않을 수도 있습니다. 따라서 관리자는 준비된 상태로 남아 있는 트랜잭션을 모니터하고 롤백 또는 완결해야 합니다.
브로커가 추적 중인 모든 트랜잭션을 나열하려면 list txn 명령을 사용합니다. 다음은 list tx 하위 명령 구문입니다.
imqcmd list txn
예를 들어, 다음 명령은 브로커에 있는 모든 트랜잭션을 나열합니다.
imqcmd list txn
list 하위 명령은 각 트랜잭션에 대해 트랜잭션 아이디, 상태, 사용자 이름, 메시지 또는 확인 응답의 수, 작성 시간을 반환합니다. 예를 들면 다음과 같습니다.
--------------------------------------------------------------- Transaction ID State User name # Msgs/ Creation time # Acks --------------------------------------------------------------- 64248349708800 PREPARED guest 4/0 1/30/02 10:08:31 AM 64248371287808 PREPARED guest 0/4 1/30/02 10:09:55 AM |
명령은 브로커에 있는 로컬 및 분산 트랜잭션을 모두 표시합니다. PREPARED 상태인 트랜잭션만을 완결 또는 롤백할 수 있습니다. 트랜잭션이 오류로 인해 준비 상태에 있고 분산 트랜잭션 관리자에서 완결을 진행하고 있지 않다는 것이 확인된 경우에만 완결 또는 롤백할 수 있습니다.
예를 들어, 브로커의 자동 롤백 등록 정보가 false로 설정되어 있으면(표 14–2 참조) 브로커를 시작할 때 PREPARED 상태인 트랜잭션을 수동으로 완결 또는 롤백해야 합니다.
list 하위 명령도 트랜잭션에서 생성된 메시지의 수와 트랜잭션에서 확인 응답된(#Msgs/#Acks) 메시지의 수를 표시합니다. 트랜잭션이 완결될 때까지는 이런 메시지가 전달되지 않으며 확인 응답이 처리되지도 않습니다.
query 하위 명령을 사용하면 클라이언트 아이디, 연결 아이디, 분산 트랜잭션 아이디(XID) 등의 여러 추가 값을 볼 수 있습니다. 다음은 query txn 하위 명령 구문입니다.
imqcmd query txn -n transactionID
예를 들어, 다음 예는 아래와 같은 출력을 생성합니다.
imqcmd query txn -n 64248349708800
Client ID Connection guest@192.18.116.219:62209->jms:62195 Creation time 1/30/02 10:08:31 AM Number of acknowledgments 0 Number of messages 4 State PREPARED Transaction ID 64248349708800 User name guest XID 6469706F6C7369646577696E6465723130313234313431313030373230 |
commit 및 rollback 하위 명령을 사용하여 분산 트랜잭션을 완결 또는 롤백할 수 있습니다. 앞에서 설명한 것과 같이, PREPARED 상태에 있는 트랜잭션만 완결 또는 롤백할 수 있습니다.
다음은 commit 하위 명령 구문입니다.
imqcmd commit txn -n transactionID
예를 들면 다음과 같습니다.
imqcmd commit txn -n 64248349708800
imqcmd rollback txn -n transactionID
자세한 내용은 표 14–2의 imq.transaction.autorollback 등록 정보를 참조하십시오.
브로커를 시작할 때 PREPARED 상태에 있는 트랜잭션을 자동으로 롤백하도록 브로커를 구성할 수도 있습니다.