Sun Java System Message Queue 3.7 UR1 관리 설명서

5장 브로커 관리

이 장에서는 imqcmd 유틸리티를 사용하여 브로커 및 해당 서비스를 관리하는 방법에 대해 설명합니다. 이 장은 다음 내용으로 구성되어 있습니다.

이 장에서 브로커 관리와 관련된 모든 항목을 설명하지는 않습니다. 추가 항목들은 별도로 다음 장에서 설명합니다.

전제 조건

imqcmdimqusermgr 명령줄 유틸리티를 사용하여 브로커를 관리합니다. 브로커를 관리하기 전에 다음을 수행해야 합니다.

imqcmd 유틸리티 사용

imqcmd 유틸리티를 사용하여 브로커와 해당 서비스를 관리할 수 있습니다.

imqcmd 명령의 구문, 하위 명령 및 옵션에 대한 자세한 내용은 13 장, 명령줄 참조을 참조하십시오. 물리적 대상 관리에 대한 자세한 내용은 별도의 장으로 제공되는 15 장, 물리적 대상 등록 정보 참조을 참조하십시오.

도움말 표시

imqcmd 유틸리티에서 도움말을 표시하려면 -h 또는 -H 옵션을 사용합니다. 하위 명령은 사용하지 마십시오. 특정 하위 명령에 대한 도움말은 볼 수 없습니다.

예를 들어, 다음 명령은 imqcmd에 대한 도움말을 표시합니다.

imqcmd -H

-h 또는 -H 옵션을 포함하는 명령줄을 하위 명령 또는 다른 옵션과 함께 입력할 경우 imqcmd 유틸리티는 -h 또는 -H 옵션만 처리합니다. 명령줄의 모든 다른 항목은 무시됩니다.

제품 버전 표시

Message Queue 제품 버전을 표시하려면 -v 옵션을 사용합니다. 예를 들면 다음과 같습니다.

imqcmd -v

-v 옵션을 포함하는 명령줄을 하위 명령 또는 다른 옵션과 함께 입력할 경우 imqcmd 유틸리티는 -v 옵션만 처리합니다. 명령줄의 모든 다른 항목은 무시됩니다.

사용자 이름 및 비밀번호 지정

imqcmd 하위 명령은 사용자 저장소에 대해 인증되므로 사용자 이름과 비밀번호가 필요합니다. -h 또는 -H 옵션을 사용하여 도움말을 표시하는 명령과, -v 옵션을 사용하여 제품 버전을 표시하는 명령만 제외됩니다.

사용자 이름 지정

-u 옵션을 사용하여 관리자 이름을 지정합니다. 관리자 이름을 생략하면 이름을 묻는 명령 프롬프트가 표시됩니다. 예를 들어, 다음 명령은 기본 브로커에 대한 정보를 표시합니다.

imqcmd query bkr -u admin

이 장의 예에서는 쉽게 이해할 수 있도록 기본 사용자 이름 admin-u 옵션의 인수로 표시합니다. 작업 환경에서는 사용자 정의 사용자 이름을 사용하게 됩니다.

비밀번호 지정

다음 방법 중 하나를 사용하여 비밀번호를 지정합니다.

Message Queue의 이전 버전에서는 imqcmd 명령줄에서 -p 옵션을 사용하여 비밀번호를 지정할 수 있었습니다. 이 옵션은 더 이상 사용되지 않으며 향후 버전에서는 제거됩니다.

브로커 이름 및 포트 지정

imqcmd의 기본 브로커는 로컬 호스트에서 실행되고 있는 브로커이며 기본 포트는 7676입니다.

원격 호스트에서 실행 중인 브로커나 기본 포트가 아닌 포트에서 수신 중인 브로커 또는 둘 다에 명령을 실행하는 경우 -b 옵션을 사용하여 브로커의 호스트 및 포트를 지정해야 합니다.

이 절의 예에서는 imqcmd 사용 방법을 설명합니다.

첫 번째 예에서는 localhost의 포트 7676에서 실행 중인 브로커의 등록 정보를 나열하므로 -b 옵션이 필요하지 않습니다. 이 명령에서는 기본 관리자 이름(admin)을 사용하고 비밀번호를 생략했기 때문에 비밀번호를 묻는 명령 프롬프트가 표시됩니다.

imqcmd query bkr -u admin

다음 예에서는 myserver 호스트의 1564 포트에서 실행 중인 브로커의 등록 정보를 나열합니다. 사용자 이름은 aladdin입니다. (이 명령을 실행하려면 사용자 저장소를 업데이트하여 사용자 이름 aladdinadmin 그룹에 추가해야 함).

imqcmd query bkr -b myserver:1564 -u aladdin

다음 예에서는 localhost의 포트 7676에서 실행 중인 브로커의 등록 정보를 나열합니다. 명령의 초기 시간 제한은 20초로 설정되고 시간 초과 이후의 시도 횟수는 7로 설정됩니다. 사용자의 비밀번호는 명령을 호출할 때 해당 디렉토리에 있는 myPassfile이라는 비밀번호 파일에 있습니다.

imqcmd query bkr -u admin -passfile myPassfile -rtm 20 -rtr 7

브로커에 보안 연결을 위해 이 예에 -secure 옵션을 포함시킬 수 있습니다. -secure 옵션을 지정하면 서비스가 구성되고 시작된 경우 imqcmd에서 ssladmin 서비스가 사용됩니다.

브로커 정보 표시

단일 브로커에 대한 정보를 쿼리 및 표시하려면 query bkr 하위 명령을 사용합니다.

다음은 query bkr 하위 명령 구문입니다.

imqcmd query bkr -b hostName:
portNumber

이 하위 명령은 기본 브로커 또는 지정한 호스트 및 포트의 브로커에 해당하는 현재 등록 정보 설정을 나열합니다. 지정한 브로커에 연결된 실행 중인 브로커(멀티 브로커 클러스터에서)의 목록도 표시합니다.

예를 들면 다음과 같습니다.

imqcmd query bkr -u admin

이 명령은 비밀번호를 묻는 메시지를 표시한 후 다음과 같은 출력을 생성합니다.


Version                                              3.6
Instance Name                                        imqbroker
Primary Port                                         7676
                                                   
Current Number of Messages in System                 0
Current Total Message Bytes in System                0

Current Number of Messages in Dead Message Queue     0
Current Total Message Bytes in Dead Message Queue    0

Log Dead Messages                                    true
Truncate Message Body in Dead Message Queue          false
                                                   
Max Number of Messages in System                     unlimited (-1)
Max Total Message Bytes in System                    unlimited (-1)
Max Message Size                                     70m
                                                   
Auto Create Queues                                   true
Auto Create Topics                                   true
Auto Created Queue Max Number of Active Consumers    1
Auto Created Queue Max Number of Backup Consumers    0
                                                   
Cluster Broker List (active)                         
Cluster Broker List (configured)                     
Cluster Master Broker                                
Cluster URL                                          
                                                   
Log Level                                            INFO
Log Rollover Interval (seconds)                      604800
Log Rollover Size (bytes)                            unlimited (-1)

브로커 등록 정보 업데이트

update bkr 하위 명령을 사용하여 다음과 같은 브로커 등록 정보를 업데이트할 수 있습니다.

다음은 update bkr 하위 명령 구문입니다.

imqcmd update bkr [-b hostName:
portNumb er]-o attribute=value
 [[-o attribute=value1]
]

이 하위 명령은 기본 브로커 또는 지정한 호스트 및 포트의 브로커에 해당하는 지정된 속성을 변경합니다. 예를 들어, 다음 명령은 대기열 대상의 자동 생성을 해제합니다.

imqcmd update bkr -o "imq.autocreate.queue=false" -u admin

등록 정보에 대한 자세한 내용은 14 장, 브로커 등록 정보 참조을 참조하십시오.

브로커 일시 중지 및 다시 시작

브로커를 시작한 후에는 imqcmd 하위 명령을 사용하여 브로커의 상태를 제어할 수 있습니다.

브로커 일시 중지

브로커를 일시 중지하면 브로커의 연결 서비스 스레드가 지연되고 브로커에서는 연결 포트의 수신을 중지합니다. 따라서 브로커가 더 이상 새로운 연결을 받아들이거나, 메시지를 수신 또는 디스패치할 수 없습니다.

그러나 브로커를 일시 중지하더라도 admin 연결 서비스는 지연되지 않으므로 브로커에 대한 메시지 흐름을 규제하는 데 필요한 관리 작업은 수행할 수 있습니다. 또한 브로커를 일시 중지해도 cluster 연결 서비스는 지연되지 않습니다. 그러나 클러스터 내의 메시지 전달은 클러스터의 여러 브로커에서 수행하는 전달 기능에 따라 다릅니다. 따라서 클러스터에서 브로커를 일시 중지하면 일부 메시지 트래픽이 느려질 수 있습니다.

다음은 pause bkr 하위 명령 구문입니다.

imqcmd pause bkr [-b hostName:
portNumber]

이 명령은 기본 브로커 또는 지정한 호스트 및 포트의 브로커를 일시 중지합니다.

다음 명령은 myhost의 포트 1588에서 실행 중인 브로커를 일시 중지합니다.

imqcmd pause bkr -b myhost:1588 -u admin

개별 연결 서비스와 개별 물리적 대상을 일시 중지할 수도 있습니다. 자세한 내용은 연결 서비스 일시 중지 및 다시 시작 물리적 대상 일시 중지 및 다시 시작을 참조하십시오.

브로커 다시 시작

브로커를 다시 시작하면 브로커의 서비스 스레드가 다시 활성화되고 브로커가 포트 수신을 다시 시작합니다.

다음은 resume bkr 하위 명령 구문입니다.

imqcmd resume bkr [-b hostName:
portNumber]

이 하위 명령은 기본 브로커 또는 지정한 호스트 및 포트의 브로커를 다시 시작합니다.

다음 명령은 localhost의 포트 7676에서 실행 중인 브로커를 다시 시작합니다.

imqcmd resume bkr -u admin

브로커 종료 및 다시 시작

브로커를 종료하면 브로커 프로세스가 자연스럽게 종료됩니다. 브로커가 새로운 연결 및 메시지 수락을 중지하고 기존 메시지 전달을 완료한 다음 브로커 프로세스를 종료합니다.

다음은 shutdown bkr 하위 명령 구문입니다.

imqcmd shutdown bkr [-b hostName:
portNumber]

이 하위 명령은 기본 브로커 또는 지정한 호스트 및 포트의 브로커를 종료합니다.

다음 명령은 ctrlsrv의 포트 1572에서 실행 중인 브로커를 종료합니다.

imqcmd shutdown bkr -b ctrlsrv:1572 -u admin

restart bkr 하위 명령을 사용하여 브로커를 종료하고 다시 시작합니다. 다음은 restart bkr 하위 명령 구문입니다.

imqcmd restart bkr [-b hostName:
portNumber]

이 하위 명령은 브로커를 처음 시작할 때 지정한 옵션을 사용하여 기본 브로커 또는 지정한 호스트 및 포트의 브로커를 종료하고 다시 시작합니다. 다른 옵션을 선택하려면 원하는 옵션을 지정하여 브로커를 종료하였다가 다시 시작합니다.

브로커 메트릭 표시

브로커에 대한 메트릭 정보를 표시하려면 metrics bkr 하위 명령을 사용합니다.

다음은 metrics bkr 하위 명령 구문입니다.

imqcmd metrics bkr [-b hostName:
portNumber]
       [-m metricType] [-int interval] [-msp 
numSamples]

이 하위 명령은 기본 브로커 또는 지정한 호스트 및 포트의 브로커에 대한 브로커 메트릭을 표시합니다.

-m 옵션을 사용하여 다음 메트릭 유형 중 하나를 지정하여 표시합니다.

-int 옵션을 사용하여 메트릭 표시 간격(초)을 지정합니다. 기본값은 5초입니다.

-msp 옵션을 사용하여 출력에 표시되는 샘플 수를 지정합니다. 기본값은 무제한 수입니다(무한).

예를 들어, 다음 명령은 브로커에 메시지가 유입 및 유출되는 속도를 10초 간격으로 표시합니다.

imqcmd metrics bkr -m rts -int 10 -u admin

다음과 같은 결과가 출력됩니다.


--------------------------------------------------------
 Msgs/sec   Msg Bytes/sec   Pkts/sec    Pkt Bytes/sec   
 In   Out     In      Out     In   Out     In      Out  
--------------------------------------------------------
 0     0      27      56      0     0      38      66   
 10    0     7365     56      10    10    7457    1132  
 0     0      27      56      0     0      38      73   
 0     10     27     7402     10    20    1400    8459  
 0     0      27      56      0     0      38      73

브로커에서 수집하여 보고하는 데이터에 대한 자세한 설명은 브로커 전체 메트릭을 참조하십시오.

연결 서비스 관리

imqcmd 유틸리티에는 다음과 같은 연결 서비스 관리 작업을 수행할 수 있는 하위 명령이 포함되어 있습니다.

브로커는 응용 프로그램 클라이언트 및 관리 클라이언트 모두와의 연결을 지원합니다. 현재 Message Queue 브로커에서 사용 가능한 연결 서비스는 표 5–1에서 확인할 수 있습니다. 표에 나타난 것과 같이 각 서비스는 NORMAL(응용 프로그램 클라이언트) 또는 ADMIN(관리 클라이언트) 중에서 사용하는 서비스 유형과 기본 전송 프로토콜에 연결됩니다.

표 5–1 Message Queue 연결 서비스

서비스 이름 

서비스 유형 

프로토콜 유형

jms

NORMAL

TCP

ssljms(엔터프라이즈판)

NORMAL

TLS(SSL 기반 보안)

httpjms(엔터프라이즈판)

NORMAL

HTTP

httpsjms(엔터프라이즈판)

NORMAL

HTTPS(SSL 기반 보안)

admin

ADMIN

TCP 

ssladmin(엔터프라이즈판)

ADMIN

TLS(SSL 기반 보안) 

imqcmd 하위 명령을 사용하면 연결 서비스 전체를 관리하거나 특정 연결 서비스를 관리할 수 있습니다. 하위 명령의 대상이 특정 서비스인 경우 -n 옵션을 사용하여 표 5–1의 서비스 이름 열에 나열된 이름 중 하나를 지정합니다.

연결 서비스 나열

브로커에서 사용 가능한 연결 서비스를 나열하려면 list svc 하위 명령을 사용합니다.

다음은 list svc 하위 명령 구문입니다.

imqcmd list svc [-b hostName:
portNumber]

이 하위 명령은 기본 브로커 또는 지정한 호스트 및 포트의 브로커에서 연결 서비스를 모두 나열합니다.

다음 명령은 localhost의 포트 7676에서 실행 중인 브로커의 모든 서비스를 나열합니다.

imqcmd list svc -u admin

이 명령은 다음과 같은 정보를 출력합니다.


------------------------------------------------
Service Name    Port Number        Service State
------------------------------------------------
admin           41844 (dynamic)    RUNNING
httpjms         -                  UNKNOWN
httpsjms        -                  UNKNOWN
jms             41843 (dynamic)    RUNNING
ssladmin        dynamic            UNKNOWN
ssljms          dynamic            UNKNOWN

연결 서비스 정보 표시

단일 서비스에 대한 정보를 쿼리 및 표시하려면 query 하위 명령을 사용합니다.

다음은 query svc 하위 명령 구문입니다.

imqcmd query svc -n serviceName [-b 
hostName:portNumber]

query svc 하위 명령은 기본 브로커 또는 지정한 호스트 및 포트의 브로커에서 실행 중인 지정된 서비스에 대한 정보를 표시합니다.

예를 들면 다음과 같습니다.

imqcmd query svc -n jms -u admin

이 명령은 비밀번호를 묻는 메시지를 표시한 후 다음과 같은 출력을 생성합니다.


Service Name                           jms
Service State                          RUNNING
Port Number                            60920 (dynamic)
                                     
Current Number of Allocated Threads    0
Current Number of Connections          0
                                     
Min Number of Threads                  10
Max Number of Threads                  1000

연결 서비스 등록 정보 업데이트

update 하위 명령을 사용하여 표 5–2에 나열된 서비스 등록 정보 중 하나 이상을 변경할 수 있습니다.

표 5–2 imqcmd에서 업데이트하는 연결 서비스 등록 정보

등록 정보 

설명 

port

업데이트할 서비스에 할당된 포트입니다(httpjms 또는 httpsjms에는 적용되지 않음). 값이 0인 경우 포트 매퍼가 포트를 동적으로 할당합니다.

minThreads

서비스에 할당된 최소 스레드 수입니다.

maxThreads

서비스에 할당된 최대 스레드 수입니다. 

다음은 update 하위 명령 구문입니다.

imqcmd update svc -n serviceName [-b 
hostName:portNumber] 
         -o attribute=value [-o 
attribute=value1]

이 하위 명령은 기본 브로커 또는 지정한 호스트 및 포트의 브로커에서 실행 중인, 지정된 서비스의 지정된 속성을 업데이트합니다. 서비스 속성에 대한 자세한 내용은 연결 등록 정보를 참조하십시오.

다음 명령은 jms 서비스에 할당된 최소 스레드 수를 20으로 변경합니다.

imqcmd update svc -n jms -o "minThreads=20" -u admin

연결 서비스 메트릭 표시

단일 서비스에 대한 메트릭 정보를 표시하려면 metrics 하위 명령을 사용합니다.

다음은 metrics 하위 명령 구문입니다.

imqcmd metrics svc -n serviceName [-b 
hostName:portNumber] [-m metricType
]
     [-int interval] [-msp numSamples]

이 하위 명령은 기본 브로커 또는 지정한 호스트 및 포트의 브로커에서 지정된 서비스의 메트릭을 표시합니다.

-m 옵션을 사용하여 표시할 메트릭 유형을 지정합니다.

-int 옵션을 사용하여 메트릭 표시 간격(초)을 지정합니다. 기본값은 5초입니다.

-msp 옵션을 사용하여 출력에 표시되는 샘플 수를 지정합니다. 기본값은 무제한 수입니다(무한).

예를 들어, 다음 명령은 jms 연결 서비스에서 처리된 메시지 및 패킷의 누적 총 수를 구합니다.

imqcmd metrics svc -n jms -m ttl -u admin

이 명령은 비밀번호를 묻는 메시지를 표시한 후 다음과 같은 출력을 생성합니다.


-------------------------------------------------
  Msgs      Msg Bytes      Pkts      Pkt Bytes   
In   Out    In     Out   In   Out    In     Out  
-------------------------------------------------
164  100  120704  73600  282  383  135967  102127
657  100  483552  73600  775  876  498815  149948

imqcmd를 사용하여 연결 서비스 메트릭을 보고하는 방법에 대한 자세한 내용은 연결 서비스 메트릭을 참조하십시오.

연결 서비스 일시 중지 및 다시 시작

일시 중지할 수 없는 admin 서비스를 제외한 모든 서비스를 일시 중지하려면 pause svcresume svc 하위 명령을 사용합니다.

다음은 pause svc 하위 명령 구문입니다.

imqcmd pause svc -n serviceName [-b 
hostName:portNumber]

이 하위 명령은 기본 브로커 또는 지정한 호스트 및 포트의 브로커에서 실행 중인 지정된 서비스를 일시 중지합니다.예를 들어, 다음 명령은 기본 프로커에서 실행 중인 httpjms 서비스를 일시 중지합니다.

imqcmd pause svc -n httpjms -u admin

서비스를 일시 중지하면 다음과 같은 현상이 나타납니다.

서비스를 다시 시작하려면 resume svc 하위 명령을 사용합니다.

다음은 resume svc 하위 명령 구문입니다.

imqcmd resume svc -n serviceName[-b 
hostName:portNumber]

이 하위 명령은 기본 브로커 또는 지정한 호스트 및 포트에서 실행 중인 지정된 서비스를 다시 시작합니다.

연결 정보 얻기

imqcmd 유틸리티의 하위 명령을 사용하여 연결 정보를 나열하고 가져올 수 있습니다.

list cxn 하위 명령은 지정된 서비스 이름의 모든 연결을 나열합니다. 다음은 list cxn 하위 명령 구문입니다.

imqcmd list cxn [-svn serviceName] [-b 
hostName:portNumber]

이 하위 명령은 기본 브로커 또는 지정한 호스트 및 포트의 브로커에서 지정된 서비스 이름의 연결을 모두 나열합니다.서비스 이름을 지정하지 않는 경우 모든 연결이 나열됩니다.

예를 들어, 다음 명령은 기본 브로커에 대한 모든 연결을 나열합니다.

imqcmd list cxn -u admin

이 명령은 비밀번호를 묻는 메시지를 표시한 후 다음과 같은 출력을 생성합니다.


Listing all the connections on the broker specified by:
-----------------------------------
Host                   Primary Port
------------------------------------
localhost              7676

---------------------------------------------------------------------------
Connection ID         User    Service   Producers  Consumers    Host
---------------------------------------------------------------------------
1964412264455443200   guest   jms       0          1            127.0.0.1
1964412264493829311   admin   admin     1          1            127.0.0.1

Successfully listed connections.

단일 연결 서비스에 대한 정보를 쿼리 및 표시하려면 query 하위 명령을 사용합니다.

query cxn -n connectionID [-b 
hostName:portNumber]

이 하위 명령은 기본 브로커 또는 지정한 호스트 및 포트의 브로커에서 지정된 연결에 대한 정보를 표시합니다.

예를 들면 다음과 같습니다.

imqcmd query cxn -n 421085509902214374 -u admin

이 명령은 비밀번호를 묻는 메시지를 표시한 후 다음과 같은 출력을 생성합니다.


Connection ID      421085509902214374
User               guest
Service            jms
Producers          0
Consumers          1
Host               111.22.333.444
Port               60953
Client ID          
Client Platform    

영구 가입 관리

imqcmd 하위 명령을 사용하면 다음 중 하나를 수행하여 브로커의 영구 가입을 관리할 수 있습니다.

영구 가입은 클라이언트에 영구로 등록된 주제에 가입하는 것입니다. 여기에는 고유한 아이디가 있으며, 사용자가 비활성 상태인 동안에도 브로커에서 가입에 대한 메시지를 보존해야 합니다. 보통 브로커는 메시지가 만료될 때 영구 가입자에 대해 보존된 메시지만 삭제할 수 있습니다.

지정된 물리적 대상에 대한 영구 가입을 나열하려면 list dur 하위 명령을 사용합니다. 다음은 list dur 하위 명령 구문입니다.

imqcmd list dur -d destName

예를 들어, 다음 명령은 로컬 호스트의 기본 포트에서 브로커를 사용하여 SPQuotes 주제에 대한 모든 영구 가입을 나열합니다.

imqcmd list dur -d SPQuotes

list dur 하위 명령은 주제의 각 영구 가입에 대해 영구 가입의 이름과 사용자의 클라이언트 아이디, 이 주제의 대기열에 들어 있는 메시지의 수, 영구 가입 상태(활성/비활성)를 반환합니다. 예를 들면 다음과 같습니다.


Name        Client ID       Number of   Durable Sub
                            Messages      State
----------------------------------------------------------------
myDurable   myClientID       1           INACTIVE

list dur 하위 명령에서 반환된 정보를 사용하여 완전 삭제하거나 메시지를 제거할 영구 가입을 확인할 수 있습니다.

purge dur 하위 명령은 지정된 클라이언트 식별자를 사용하여 지정된 영구 가입에 대한 모든 메시지를 제거합니다. 다음은 purge dur 하위 명령 구문입니다.

imqcmd purge dur -n subscrName -c 
clientID

destroy dur 하위 명령은 지정한 클라이언트 식별자에 해당하는 지정된 영구 가입을 완전 삭제합니다. 다음은 destroy dur 하위 명령 구문입니다.

imqcmd destroy dur -n subscrName -c 
clientID

예를 들어, 다음 명령은 영구 가입 myDurable과 클라이언트 아이디 myClientID를 완전 삭제합니다.

imqcmd destroy dur -n myDurable -c myClientID

트랜잭션 관리

클라이언트 응용 프로그램에서 시작하는 모든 트랜잭션은 브로커에서 추적됩니다. 이는 단순한 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

commitrollback 하위 명령을 사용하여 분산 트랜잭션을 완결 또는 롤백할 수 있습니다. 앞에서 설명한 것과 같이, PREPARED 상태에 있는 트랜잭션만 완결 또는 롤백할 수 있습니다.

다음은 commit 하위 명령 구문입니다.

imqcmd commit txn -n transactionID

예를 들면 다음과 같습니다.

imqcmd commit txn -n 64248349708800

다음은 rollback 하위 명령 구문입니다.

imqcmd rollback txn -n transactionID

자세한 내용은 표 14–2imq.transaction.autorollback 등록 정보를 참조하십시오.

브로커를 시작할 때 PREPARED 상태에 있는 트랜잭션을 자동으로 롤백하도록 브로커를 구성할 수도 있습니다.