이전 목차 색인 다음 |
Sun Java System Message Queue 3.5 SP1 관리 설명서

> ## 6장
> 브로커 및 응용 프로그램 관리

> 이 장에서는 브로커 및 제공 서비스 관리에 관련된 작업을 수행하는 방법을 설명합니다. 작업 중 일부는 특정 클라이언트 응용 프로그램에 대해 독립적이며 다음이 포함됩니다.

> - 브로커의 상태 제어: 브로커를 일시 중지하고, 다시 시작하고, 종료하고, 처음부터 다시 시작할 수 있습니다.
> - 브로커 등록 정보 쿼리 및 업데이트
> - 연결 서비스 관리

> 기타 브로커 작업은 특정 응용 프로그램을 대신하여 수행합니다. 여기에는 물리적 대상 관리, 영구 가입, 트랜잭션이 포함됩니다.

> - Message Queue 메시지는 브로커 대상을 통해 수신기 또는 가입자에게 라우팅됩니다. 브로커에서 이러한 대상을 만드는 것은 관리자의 책임입니다.
> - Message Queue는 영구 가입이 있는 클라이언트가 비활성화되어 있는 동안에도 영구 가입자의 자원을 할당 및 관리합니다. 영구 가입에 대한 정보를 얻고 영구 가입을 완전 삭제하거나 메시지를 제거하여 Message Queue 자원을 확보하려면 Message Queue 명령 도구를 사용합니다.
> - Message Queue 트랜잭션과 분산 트랜잭션은 브로커에 의해 추적됩니다. 오류가 발생하면 트랜잭션을 수동으로 완결 또는 롤백해야 할 수도 있습니다.

> 이 장에서는 명령 유틸리티(imqcmd)를 사용해서 이 모든 작업을 수행하는 방법을 설명합니다. Message Queue 메시지 서버의 그래픽 인터페이스인 관리 콘솔을 사용하면 이와 같은 여러 작업을 수행할 수 있습니다. 자세한 내용은 4장, "관리 콘솔 자습서"를 참조하십시오.

> ##

> 명령 유틸리티

> 명령 유틸리티를 사용하면 브로커와 브로커가 제공하는 서비스를 관리할 수 있습니다. 이 절에서는 기본 imqcmd 명령 구문을 설명하고, 하위 명령 목록을 제공하고, imqcmd 옵션을 요약합니다. 다음 절에서는 이런 명령을 사용하여 특정 작업을 수행하는 방법에 대해 설명합니다.

> ### imqcmd 명령 구문

> imqcmd 명령의 일반 구문은 다음과 같습니다.

> imqcmd subcommand argument [options]
> imqcmd -h|H
> imqcmd -v

> -v, -h 또는 -H 옵션을 지정하는 경우 명령줄에 지정된 하위 명령이 실행되지 않습니다. 예를 들어, 다음 명령을 입력하면 버전 정보는 표시되지만 restart 하위 명령은 실행되지 않습니다.

> imqcmd restart bkr -v

> ### imqcmd 하위 명령

> 명령 유틸리티(imqcmd)는 표 6-1에 나열된 하위 명령을 포함합니다. 하위 명령은 이 장의 작업 관련 절에 자세히 설명되어 있습니다.

> 표 6-1 imqcmd 하위 명령

> 하위 명령 및 인수 | 설명
> --- | ---
> commit txn | 트랜잭션을 완결합니다.
> compact dst | 기본 제공 파일 기반 데이터 저장소에서 하나 이상의 대상을 압축합니다.
> create dst | 대상을 만듭니다.
> destroy dst | 대상을 완전 삭제합니다.
> destroy dur | 영구 가입을 완전 삭제합니다.
> list cxn | 브로커에 대한 연결을 나열합니다.
> list dst | 브로커의 대상을 나열합니다.
> list dur | 주제의 영구 가입을 나열합니다.
> list svc | 브로커의 서비스를 나열합니다.
> list txn | 브로커의 트랜잭션을 나열합니다.
> metrics bkr | 브로커 메트릭을 표시합니다.
> metrics dst | 대상 메트릭을 표시합니다.
> metrics svc | 서비스 메트릭을 표시합니다.
> pause bkr | 브로커의 모든 서비스를 일시 중지합니다.
> pause dst | 브로커에서 하나 이상의 대상을 일시 중지합니다.
> pause svc | 브로커에서 단일 서비스를 일시 중지합니다.
> purge dst | 대상을 완전 삭제하지 않고 대상에 있는 모든 메시지를 제거합니다.
> purge dur | 영구 가입을 완전 삭제하지 않고 영구 가입의 모든 메시지를 제거합니다.
> query bkr | 브로커의 정보를 쿼리 및 표시합니다.
> query cxn | 연결의 정보를 쿼리 및 표시합니다.
> query dst | 대상의 정보를 쿼리 및 표시합니다.
> query svc | 서비스의 정보를 쿼리 및 표시합니다.
> query txn | 트랜잭션의 정보를 쿼리 및 표시합니다.
> reload cls | 브로커 클러스터 구성을 다시 로드합니다.
> restart bkr | 현재 실행 중인 브로커 인스턴스를 다시 시작합니다. 새 브로커 인스턴스를 시작하는 데 사용할 수는 없습니다.
> resume bkr | 브로커의 모든 서비스를 다시 시작합니다.
> resume dst | 브로커에서 일시 중지된 하나 이상의 대상을 다시 시작합니다.
> resume svc | 한 서비스를 다시 시작합니다.
> rollback txn | 트랜잭션을 롤백합니다.
> shutdown bkr | 브로커 인스턴스를 종료합니다. imqbrokerd 명령을 사용해서 나중에 시작할 수 있지만, imqcmd의 restart bkr 하위 명령으로 시작할 수는 없습니다.
> update bkr | 브로커의 속성을 업데이트합니다.
> update dst | 대상의 속성을 업데이트합니다.
> update svc | 서비스의 속성을 업데이트합니다.

> ### imqcmd 옵션 요약

> 표 6-2에 imqcmd 명령의 옵션이 나열되어 있습니다. 사용 설명은 다음의 작업 기반 절을 참조하십시오.

> 표 6-2 imqcmd 옵션

> 옵션 | 설명
> --- | ---
> -b hostName:port | 브로커의 호스트 이름과 해당 포트 번호를 지정합니다. 기본값은 localhost:7676입니다. 포트만 지정하려면: -b :7878 이름만 지정하려면: -b somehost
> -c clientID | 주제에 영구 가입의 아이디를 지정합니다. "영구 가입 관리"를 참조하십시오.
> -d destinationName | 주제의 이름을 지정합니다. list dur 및 destroy dur 하위 명령에 사용됩니다. "영구 가입 관리"를 참조하십시오.
> -f | 사용자의 확인 없이 작업을 수행합니다.
> -h | 사용 도움말을 표시합니다. 명령줄에 있는 명령은 실행되지 않습니다.
> -H | 사용 도움말, 속성 목록 및 예를 표시합니다. 명령줄에 있는 명령은 실행되지 않습니다.
> -int interval | metrics bkr, metrics dst 및 metrics svc 하위 명령이 메트릭 출력을 표시하는 간격(초)을 지정합니다.
> -javahome path | Java 2와 호환할 수 있는 대체 런타임을 지정하여 사용합니다(기본값은 시스템의 런타임 또는 Message Queue와 함께 제공되는 런타임 사용).
> -m metricType | 표시할 메트릭 정보의 유형을 지정합니다. 이 옵션은 metrics dst, metrics svc 또는 metrics bkr 하위 명령에 사용됩니다. metricType 값은 메트릭이 대상, 서비스 또는 브로커 중 어느 것에 대해 생성되었는지에 따라 다릅니다.
> -msp numSamples | metrics bkr, metrics dst 및 metrics svc 하위 명령이 메트릭 출력에 표시하는 메트릭 샘플 수를 지정합니다.
> -n argumentName | 하위 명령 인수의 이름을 지정합니다. 하위 명령에 따라 서비스나 물리적 대상, 영구 가입의 이름일 수도 있고 연결 아이디나 트랜잭션 아이디일 수도 있습니다.
> -o attribute=value | 속성의 값을 지정합니다. 하위 명령 인수에 따라 브로커("브로커 관리" 참조), 서비스("연결 서비스 관리" 참조) 또는 대상("대상 관리" 참조)의 속성이 될 수 있습니다.
> -p password | 자신(관리자)의 비밀번호를 지정합니다. 이 값을 생략하면 값을 묻는 메시지가 표시됩니다.
> -pst pauseType | 대상을 일시 중지할 때 생성자나 사용자 또는 둘 다를 일시 중지할지 여부를 지정합니다. "대상 관리"를 참조하십시오.
> -rtm timeout | imqcmd 하위 명령의 초기(다시 시도) 시간 초과 기간(초)을 지정합니다. 시간 초과는 imqcmd 하위 명령이 브로커에 요청한 후 기다리는 시간입니다. 이후 하위 명령이 다시 시도할 때마다 초기 시간 초과 기간의 배수인 시간 초과 값을 사용합니다. 기본값: 10
> -rtr numRetries | imqcmd 하위 명령이 처음으로 시간 초과된 후에 다시 시도하는 횟수를 지정합니다. 기본값: 5
> -s | 비대화형 모드입니다. 출력이 표시되지 않습니다.
> -secure | ssladmin 연결 서비스를 사용해서 브로커에 대한 보안 관리 연결을 지정합니다("4단계. SSL기반 클라이언트 구성 및 실행" 참조).
> -svn serviceName | 연결을 나열할 서비스를 지정합니다. "연결 정보 얻기"를 참조하십시오.
> -t destType | 대상의 유형을 지정합니다. t (주제) 또는 q (대기열). "대상 관리"를 참조하십시오.
> -tmp | 임시 대상을 표시합니다. 표 6-9를 참조하십시오.
> -u userName | 자신(관리자)의 이름을 지정합니다. 이 값을 생략하면 값을 묻는 메시지가 표시됩니다.
> -v | 버전 정보를 표시합니다. 명령줄에 있는 명령은 실행되지 않습니다.

> imqcmd 하위 명령을 실행할 때마다 호스트 이름 및 포트 번호(-b), 사용자 아이디(-u), 비밀번호(-p) 및 보안 연결(-secure) 옵션을 지정해야 합니다. 호스트 이름과 포트 번호를 지정하지 않으면 기본값이 사용됩니다. 사용자 아이디 및 비밀번호 정보를 지정하지 않으면 입력 프롬프트가 표시됩니다. -secure를 지정하지 않으면 연결에 보안이 적용되지 않습니다.

> 주 | -secure 옵션을 사용하려면 먼저 "TCP/IP에서 SSL 기반 서비스 설정"에 설명된 것처럼 대상 브로커 인스턴스에서 ssladmin 서비스를 설정한 다음 활성화해야 합니다.

> ### imqcmd 명령 사용

> imqcmd 명령을 사용해서 브로커를 관리하려면 다음을 수행해야 합니다.

> - imqbrokerd 명령을 사용해서 브로커를 시작합니다.

> "브로커 시작"을 참조하십시오. 명령 유틸리티는 이미 실행 중인 브로커의 관리에만 사용할 수 있으며 이 유틸리티를 사용해서 브로커를 시작할 수는 없습니다.

> - 브로커가 로컬 호스트의 포트 7676에서 실행 중인 경우가 아니면 -b 옵션을 사용해서 대상 브로커를 지정합니다.
> - 적절한 관리자 사용자 아이디와 비밀번호를 지정합니다. 이를 지정하지 않으면 입력 프롬프트가 표시됩니다. 어떤 방법을 사용해도, imqcmd를 사용해서 수행하는 모든 작업은 사용자 저장소에 대해 인증됩니다. 자세한 내용은 "사용자 인증"을 참조하십시오.

> Message Queue를 설치하면 기본 플랫 파일 사용자 저장소가 설치됩니다. 저장소에는 admin 사용자와 guest 사용자 각각에 대해 하나씩 두 개의 항목이 있습니다. 이러한 항목을 통해 추가 작업을 하지 않고도 브로커 인스턴스에 연결할 수 있습니다. 예를 들어, Message Queue를 테스트만 하는 경우에는 기본 사용자 아이디와 비밀번호(admin/admin)를 사용하여 imqcmd 유틸리티를 실행할 수 있습니다.

> 작업 시스템을 설정하는 경우에는 추가 작업을 통해 관리 사용자를 인증하고 권한을 부여해야 합니다(8장, "보안 관리" 참조). 특히, Message Queue 사용자 저장소에 항목을 만들어야 합니다("플랫 파일 사용자 저장소 사용" 참조). 사용자 저장소에 LDAP 디렉토리 서버를 사용할 수도 있습니다("사용자 저장소에 LDAP 서버 사용" 참조).

> ### imqcmd 사용 예

> 아래에서는 imqcmd 명령 사용의 예를 보여 줍니다.

> - 다음 명령은 localhost의 포트 7676에서 실행 중인 브로커의 등록 정보를 나열합니다.

> imqcmd query bkr -u admin -p admin

> - 다음 명령은 myserver의 포트 1564에서 실행 중인 브로커의 등록 정보를 나열합니다. 사용자 아이디는 alladin, 사용자 비밀번호는 abracadabra입니다.

> imqcmd query bkr -b myserver:1564 -u alladin -p abracadabra

> 사용자 아이디 alladin이 admin 그룹에 할당되어 있으면 지정한 브로커에 admin 클라이언트로 연결할 수 있습니다.

> - 다음 명령은 localhost의 포트 7676에서 실행 중인 브로커의 등록 정보를 나열합니다. 이 명령의 초기 시간 초과는 20초로, 시간 초과 이후의 재시도 횟수는 7로 설정합니다.

> imqcmd query bkr -u admin -p admin -rtm 20 -rtr 7

> ##

> 브로커 관리

> 명령 유틸리티의 하위 명령을 사용하여 다음과 같은 브로커 관리 작업을 수행할 수 있습니다.

> - 브로커 정보 표시
> - 브로커 등록 정보 업데이트
> - 브로커 메트릭 표시
> - 브로커 상태 제어

> 브로커의 연결 서비스를 관리하려면 "연결 서비스 관리"를 참조하십시오. 브로커 대상을 관리하려면 "대상 관리"를 참조하십시오.

> 표 6-3에서는 브로커 관리에 사용되는 imqcmd 하위 명령을 나열합니다. 호스트 이름 또는 포트가 지정되어 있지 않으면 기본값(localhost:7676)인 것으로 가정합니다.

> 표 6-3 브로커 관리에 사용되는 imqcmd 하위 명령

> 하위 명령 구문 | 설명
> --- | ---
> metrics bkr [-b hostName:port] [-m metricType] [-int interval] [-msp numSamples] | 기본 브로커 또는 지정한 호스트 및 포트의 브로커 메트릭을 표시합니다. -m 옵션을 사용하여 표시할 메트릭 유형을 지정합니다. ttl 브로커에 유입 및 유출되는 메시지와 패킷의 메트릭을 표시합니다(기본 메트릭 유형). rts 브로커에 유입 및 유출되는 메시지와 패킷의 메트릭을 초당 속도로 표시합니다. cxn 연결, 가상 메모리 힙 및 스레드를 표시합니다. -int 옵션을 사용하여 메트릭 표시 간격(초)을 지정합니다. 기본값은 5초입니다. -msp 옵션을 사용하여 출력에 표시되는 샘플 수를 지정합니다. 기본값은 무제한 수(무한)입니다.
> pause bkr [-b hostName:port] | 기본 브로커 또는 지정한 호스트 및 포트의 브로커를 일시 중지합니다. "브로커 일시 중지 및 다시 시작"을 참조하십시오.
> query bkr -b hostName:port | 기본 브로커 또는 지정한 호스트 및 포트의 브로커에 해당하는 현재 등록 정보 설정을 나열합니다. 지정한 브로커에 연결된 실행 중인 브로커(브로커가 여러 개인 클러스터에서)의 목록도 표시합니다.
> reload cls | 브로커 클러스터에만 적용됩니다. 클러스터에 있는 모든 브로커에서 imq.cluster.brokerlist 등록 정보를 다시 로드하고 클러스터 정보를 업데이트하도록 합니다. 자세한 내용은 "클러스터에 브로커 추가"를 참조하십시오.
> restart bkr [-b hostName:port] | 기본 브로커 또는 지정한 호스트 및 포트의 브로커를 종료한 후 처음부터 다시 시작합니다. 이 명령은 브로커를 처음 시작했을 때 지정한 옵션을 사용해서 브로커를 다시 시작합니다. 다른 옵션을 적용하려면 브로커를 종료한 후 원하는 옵션을 지정하여 다시 시작해야 합니다.
> resume bkr [-b hostName:port] | 기본 브로커 또는 지정한 호스트 및 포트의 브로커를 다시 시작합니다.
> shutdown bkr [-b hostName:port] | 기본 브로커 또는 지정한 호스트 및 포트의 브로커를 종료합니다.
> update bkr [-b hostName:port] -o attribute=value [-o attribute=value1]... | 기본 브로커 또는 지정한 호스트 및 포트의 브로커에 해당하는 지정된 속성을 변경합니다.

> localhost의 포트 7676에서 실행 중인 브로커가 대상이 아닌 경우에는 표 6-3에 나열된 하위 명령을 사용할 때 브로커 호스트 이름과 포트 번호를 지정해야 합니다.

> ### 브로커 정보 표시

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

> imqcmd query bkr -u admin -p admin

> 다음과 같은 출력이 표시됩니다.

> Version 3.5 SP1
> Instance Name imqbroker
> Primary Port 7676
> Current Number of Messages in System 0
> Current Total Message Bytes in System 0
> 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 하위 명령을 사용하면 표 6-4에 나열된 브로커 등록 정보를 업데이트할 수 있습니다. 브로커에서 업데이트된 사항은 브로커의 인스턴스 구성 파일에 자동으로 기록됩니다.

> 표 6-4 imqcmd가 업데이트하는 브로커 등록 정보

> 등록 정보 | 참조
> --- | ---
> imq.autocreate.queue | 표 2-10
> imq.autocreate.topic | 표 2-10
> imq.autocreate.queue.maxNumActiveConsumers | 표 2-10
> imq.autocreate.queue.maxNumBackupConsumers | 표 2-10
> imq.cluster.url | 표 5-3
> imq.log.level | 표 2-9
> imq.log.file.rolloversecs | 표 2-9
> imq.log.file.rolloverbytes | 표 2-9
> imq.system.max_count | 표 2-4
> imq.system.max_size | 표 2-4
> imq.message.max_size | 표 2-4
> imq.portmapper.port | 표 2-3

> 예를 들어, 다음 명령은 대기열 대상의 자동 작성을 해제합니다.

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

> ### 브로커 상태 제어

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

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

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

> 그러나 브로커를 일시 중지하더라도 관리 연결 서비스는 지연되지 않으므로 브로커에 대한 메시지 흐름을 규제하는 데 필요한 관리 작업은 수행할 수 있습니다. 예를 들어, 특정 대상으로 메시지가 폭주하는 경우에는 브로커를 일시 중지한 후 메시지 소스 추적, 대상 크기 제한, 대상 완전 삭제 등의 작업 중 하나를 수행하여 문제 해결을 도울 수 있습니다.

> 또한, 브로커를 일시 중지해도 클러스터 연결 서비스는 지연되지 않습니다. 그러나 클러스터 내의 메시지 전달은 클러스터의 여러 브로커에서 수행하는 전달 기능에 따라 다릅니다.

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

> imqcmd pause bkr -b myhost:1588 -u admin -p admin

> 또한 개별 연결 서비스를 일시 중지할 수도 있고("연결 서비스 일시 중지 및 다시 시작" 참조) 개별 대상을 일시 중지할 수도 있습니다("대상 일시 중지 및 다시 시작" 참조).

> - 브로커 다시 시작. 브로커를 다시 시작하면 브로커의 서비스 스레드가 다시 활성화되고 브로커가 다시 포트 수신을 시작합니다. 다음 명령은 localhost의 포트 7676에서 실행 중인 브로커를 다시 시작합니다.

> imqcmd resume bkr -u admin -p admin

> #### 브로커 종료 및 다시 시작

> - 브로커 종료. 브로커를 종료하면 브로커 프로세스가 종료됩니다. 이것은 유예 기간이 있는 종료 방법으로, 브로커는 새 연결과 메시지의 수신을 멈추고, 기존 메시지의 전달을 완료한 다음 브로커 프로세스를 종료합니다. 다음 명령은 ctrlsrv의 포트 1572에서 실행 중인 브로커를 종료합니다.

> imqcmd shutdown bkr -b ctrlsrv:1572 -u admin -p admin

> - 브로커를 처음부터 다시 시작. 브로커를 종료한 후 처음부터 다시 시작합니다. 다음 명령은 localhost의 포트 7676에서 실행 중인 브로커를 처음부터 다시 시작합니다.

> imqcmd restart bkr -u admin -p admin

> ### 브로커 메트릭 표시

> 브로커에 대한 메트릭 정보를 표시하려면 metrics bkr 하위 명령을 사용합니다. 예를 들어, 다음 명령은 브로커에 메시지가 유입 및 유출되는 속도를 10초 간격으로 표시합니다.

> imqcmd metrics bkr -m rts -int 10 -u admin -p 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 연결 서비스에 대한 개요는 "연결 서비스"를 참조하십시오.

> 표 6-5에 연결 서비스 관리에 사용되는 imqcmd 하위 명령이 나열되어 있습니다. 호스트 이름 또는 포트가 지정되어 있지 않으면 기본값(localhost:7676)인 것으로 가정합니다.

> 표 6-5 연결 서비스 관리에 사용되는 imqcmd 하위 명령

> 하위 명령 구문 | 설명
> --- | ---
> list svc [-b hostName:port] | 기본 브로커 또는 지정한 호스트 및 포트의 브로커에 있는 모든 연결 서비스를 나열합니다.
> metrics svc -n serviceName [-b hostName:port] [-m metricType] [-int interval] [-msp numSamples] | 기본 브로커 또는 지정한 호스트 및 포트의 브로커에서 지정된 서비스의 메트릭을 표시합니다. -m 옵션을 사용하여 표시할 메트릭 유형을 지정합니다. ttl 브로커에 유입 및 유출되는 메시지와 패킷의 메트릭을 지정된 서비스 방법으로 표시합니다(기본 메트릭 유형). rts 브로커에 메시지와 패킷이 유입 및 유출되는 초당 속도에 대한 메트릭을 지정된 서비스 방법으로 표시합니다. cxn 연결, 가상 메모리 힙 및 스레드를 표시합니다. -int 옵션을 사용하여 메트릭 표시 간격(초)을 지정합니다. 기본값은 5초입니다. -msp 옵션을 사용하여 출력에 표시되는 샘플 수를 지정합니다. 기본값은 무제한 수(무한)입니다.
> pause svc -n serviceName [-b hostName:port] | 기본 브로커 또는 지정한 호스트 및 포트의 브로커에서 실행 중인, 지정된 서비스를 일시 중지합니다. 관리 서비스는 일시 중지할 수 없습니다.
> query svc -n serviceName [-b hostName:port] | 기본 브로커 또는 지정한 호스트 및 포트의 서비스에서 실행 중인, 지정된 서비스에 대한 정보를 표시합니다.
> resume svc -n serviceName [-b hostName:port] | 기본 브로커 또는 지정한 호스트 및 포트에서 실행 중인, 지정된 서비스를 다시 시작합니다.
> update svc -n serviceName [-b hostName:port] -o attribute=value [-o attribute=value1]... | 기본 브로커 또는 지정한 호스트 및 포트의 브로커에서 실행 중인, 지정된 서비스의 지정된 속성을 업데이트합니다. 서비스 속성에 대한 설명은 표 6-7을 참조하십시오.

> 브로커는 응용 프로그램 클라이언트 및 관리 클라이언트 모두와의 연결을 지원합니다. 현재 Message Queue 브로커에서 사용할 수 있는 연결 서비스가 표 6-6에 표시되어 있습니다. 서비스 이름 열에 있는 값은 -n 옵션의 서비스 이름을 지정할 때 사용되는 값입니다. 표에 있는 것과 같이 각 서비스는 NORMAL (응용 프로그램 클라이언트) 또는 ADMIN (관리 클라이언트) 중에서 사용하는 서비스 유형과 기본 전송 계층에 따라 지정됩니다.

> 표 6-6 브로커가 지원하는 연결 서비스

> 서비스 이름 | 서비스 유형 | 프로토콜 유형
> --- | --- | ---
> jms | NORMAL | tcp
> ssljms (엔터프라이즈판) | NORMAL | tls (SSL 기반 보안)
> httpjms (엔터프라이즈판) | NORMAL | http
> httpsjms (엔터프라이즈판) | NORMAL | https (SSL 기반 보안)
> admin | ADMIN | tcp
> ssladmin (엔터프라이즈판) | ADMIN | tls (SSL 기반 보안)

> ### 연결 서비스 나열

> 브로커에서 사용할 수 있는 연결 서비스를 나열하려면 다음과 같은 명령을 사용합니다.

> imqcmd list svc [-b hostName:portNumber] -u admin -p admin

> 예를 들어, 다음 명령은 myServer 호스트의 포트 6565에서 실행 중인 브로커에서 사용할 수 있는 서비스를 나열합니다.

> imqcmd list svc -b MyServer:6565 -u admin -p admin

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

> imqcmd list svc -u admin -p 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 하위 명령을 사용합니다. 예를 들면 다음과 같습니다.

> imqcmd query svc -n jms -u admin -p 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 하위 명령을 사용하여 표 6-7에 나열된 서비스 등록 정보 중 하나 이상을 변경할 수 있습니다.

> 표 6-7 imqcmd가 업데이트하는 연결 서비스 등록 정보

> 등록 정보 | 설명
> --- | ---
> port | 업데이트할 서비스에 할당된 포트입니다(httpjms 또는 httpsjms에는 적용되지 않음). 값이 0인 경우 포트 매퍼가 포트를 동적으로 할당합니다.
> minThreads | 서비스에 할당된 최소 스레드 수입니다.
> maxThreads | 서비스에 할당된 최대 스레드 수입니다.

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

> imqcmd update svc -n jms -o "minThreads=20"

> ### 연결 서비스 메트릭 표시

> 단일 서비스에 대한 메트릭 정보를 표시하려면 metrics 하위 명령을 사용합니다. 예를 들어, 다음 명령은 jms 연결 서비스에서 처리된 메시지 및 패킷의 누적 총 수를 구합니다.

> imqcmd metrics svc -n jms -m ttl -u admin -p 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를 사용하여 연결 서비스 메트릭을 보고하는 방법에 대한 자세한 내용은 "모니터링 도구"를 참조하십시오.

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

> 관리 서비스(일시 중지 불가)를 제외한 다른 서비스를 일시 중지하려면 다음과 같은 명령을 사용합니다.

> imqcmd pause svc -n serviceName -u admin -p admin

> 서비스를 일시 중지하면 다음과 같이 됩니다.

> - 브로커는 일시 중지된 서비스에서 새 클라이언트 연결 수신을 멈춥니다. Message Queue 클라이언트가 새 연결을 열려고 하면 예외가 발생합니다.
> - 일시 중지된 서비스의 기존 연결은 모두 그대로 유지되지만 브로커는 서비스가 다시 시작될 때까지 이러한 연결의 모든 메시지 처리를 지연합니다(예를 들어, 클라이언트가 메시지를 보내려고 하면 서비스가 다시 시작될 때까지 send() 메소드가 차단됨).
> - 브로커가 이미 수신한 메시지의 메시지 전달 상태는 그대로 유지됩니다(예를 들어, 트랜잭션이 중단되지 않고 서비스가 다시 시작되면 메시지 전달이 재개됨).

> 서비스를 다시 시작하려면 다음과 같은 명령을 사용합니다.

> imqcmd resume svc -n serviceName -u admin -p admin

> ##

> 연결 정보 얻기

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

> 표 6-8에 연결에 적용되는 imqcmd 하위 명령이 나열되어 있습니다. 호스트 이름 또는 포트가 지정되어 있지 않으면 localhost, 7676인 것으로 가정합니다.

> 표 6-8 연결 서비스 관리에 사용되는 imqcmd 하위 명령

> 하위 명령 구문 | 설명
> --- | ---
> list cxn [-svn serviceName] [-b hostName:port] | 기본 브로커 또는 지정한 호스트 및 포트의 브로커에서 지정된 서비스 이름의 연결을 모두 나열합니다. 서비스 이름을 지정하지 않는 경우 모든 연결이 나열됩니다.
> query cxn -n connectionID [-b hostName:port] | 기본 브로커 또는 지정한 호스트 및 포트의 브로커에서 지정된 연결에 대한 정보를 표시합니다.

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

> imqcmd query cxn -n 421085509902214374 -u admin -p admin

> 다음과 같은 출력이 표시됩니다.

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

> ##

> 대상 관리

> 모든 Message Queue 메시지는 특정 브로커에 만들어지는 대기열 및 주제 대상을 통해 해당 사용자 클라이언트로 라우팅됩니다.

> 명령 유틸리티의 하위 명령을 사용하여 다음과 같은 대상 관리 작업을 수행할 수 있습니다.

> - 대상 만들기
> - 대상 나열
> - 대상 정보 표시
> - 대상 속성 업데이트
> - 대상 메트릭 표시
> - 대상 일시 중지 및 다시 시작
> - 대상 제거
> - 대상 완전 삭제
> - 대상 압축

> 대상에 대한 소개는 "물리적 대상"을 참조하십시오.

> 표 6-9에서는 imqcmd 대상 하위 명령을 요약합니다. 기본 브로커(localhost:7676)가 아닌 경우 브로커의 호스트 이름과 포트를 지정해야 합니다.

> 표 6-9 대상 관리에 사용되는 imqcmd 하위 명령

> 하위 명령 구문 | 설명
> --- | ---
> compact dst [-t destType -n destName] | 기본 제공 파일 기반 데이터 저장소에서 지정된 유형과 이름의 대상을 압축합니다. 대상 유형과 이름을 지정하지 않으면 모든 대상이 압축됩니다. 대상을 압축하려면 먼저 일시 중지해야 합니다.
> create dst -t destType -n destName [-o attribute=value] [-o attribute=value1]... | 지정한 유형의 대상을 지정한 이름과 지정한 속성을 사용하여 만듭니다. 대상 이름은 영숫자(공백 없음)만 포함하고 영문자나 "_" 및 "$" 문자로 시작할 수 있습니다. "mq" 문자열로는 시작할 수 없습니다.
> destroy dst -t destType -n destName | 지정한 유형과 이름의 대상을 완전 삭제합니다.
> list dst [-t destType] [-tmp] | 지정된 유형의 대상을 모두 나열합니다. 임시 대상을 함께 나열할 수도 있습니다("임시 대상" 참조). 유형 인수는 다음과 같은 두 가지 값을 가질 수 있습니다. destType = q (대기열) destType = t (주제) 유형을 지정하지 않으면 모든 유형의 대상이 모두 나열됩니다.
> metrics dst -t destType -n destName [-m metricType] [-int interval] [-msp numSamples] | 지정한 유형과 이름의 대상에 대한 메트릭 정보를 표시합니다. -m 옵션을 사용하여 표시할 메트릭 유형을 지정합니다. ttl 대상에 유입 및 유출되고 메모리에 있는 메시지와 패킷의 메트릭을 표시합니다(기본 메트릭 유형). rts 대상에 유입 및 유출되는 메시지와 패킷의 메트릭을 초당 속도로 나타내고 기타 속도 정보를 표시합니다. con 사용자 관련 메트릭을 표시합니다. dsk 디스크 사용 메트릭을 표시합니다. -int 옵션을 사용하여 메트릭 표시 간격(초)을 지정합니다. 기본값은 5초입니다. -msp 옵션을 사용하여 출력에 표시되는 샘플 수를 지정합니다. 기본값은 무제한 수(무한)입니다.
> pause dst [-t destType -n destName] [-pst pauseType] | 지정된 유형과 이름의 대상에서 사용자에게 메시지 전달(-pst CONSUMERS), 생성자로부터 메시지 전달(-pst PRODUCERS) 또는 두 가지 모두(-pst ALL)를 일시 중지합니다. 대상 유형과 이름을 지정하지 않으면 모든 대상이 일시 중지됩니다. 기본값은 ALL입니다.
> purge dst -t destType -n destName | 지정한 유형과 이름의 대상에서 메시지를 제거합니다.
> query dst -t destType -n destName | 지정한 유형과 이름의 대상에 대한 정보를 나열합니다.
> resume dst [-t destType -n destName] | 지정된 유형과 이름의 일시 중지된 대상에서 메시지 전달을 다시 시작합니다. 대상 유형과 이름을 지정하지 않으면 모든 대상이 다시 시작됩니다.
> update dst -t destType -n destName -o attribute=value [-o attribute=value1]... | 지정한 대상에서 지정한 속성의 값을 업데이트합니다. 속성 이름에는 표 6-10에 설명된 속성을 사용할 수 있습니다.

> ### 대상 만들기

> 대상을 만들 때 다음을 지정해야 합니다.

> - 대상 유형: 주제 또는 대기열
> - 대상 이름: 영숫자(공백 없음)만 포함하고 영문자나 "_" 및 "$" 문자로 시작할 수 있습니다. "mq" 문자열로는 시작할 수 없습니다.
> - 대상 속성에서 기본값이 아닌 값

> 많은 대상 속성이 브로커 메모리 자원 및 메시지 흐름 관리에 사용됩니다. 예를 들어, 대상에 허용되는 최대 생성자 수 또는 최대 메시지 수(또는 크기)를 지정할 수 있습니다. 이러한 제한은 브로커 구성 등록 정보를 사용하여 브로커 전체에 설정할 수 있는 제한과 비슷합니다("메모리 자원 및 메시지 흐름 관리" 참조). 또한 이러한 제한에 도달할 때 브로커가 응답하는 방법도 지정할 수 있습니다.

> 대기열 대상에만 적용되는 대상 속성도 있습니다. 이러한 속성은 다중 사용자로의 로드 균형 조정 메시지 전달 시 활성 및 백업 사용자 수를 지정하는 데 사용됩니다("대기열 대상" 참조).

> 표 6-10에서는 각 대상 유형에 적용되는 속성을 설명합니다. 대상을 만들거나 업데이트할 때 속성 값을 설정할 수 있습니다. 자동 작성 대상의 경우 브로커의 인스턴스 구성 파일에 기본 등록 정보 값을 설정합니다("구성 파일" 참조).

> 표 6-10 대상 속성

> 대상 유형 | 속성 | 기본값 | 설명
> --- | --- | --- | ---
> 대기열 및 주제 | maxNumMsgs1 | -1 (제한 없음) | 대상에 허용되는 사용되지 않은 최대 메시지 수를 지정합니다.
> 대기열 및 주제 | maxTotalMsgBytes1 | -1 (제한 없음) | 대상에서 사용되지 않은 메시지가 사용할 수 있는 전체 메모리 양의 최대값(바이트)을 지정합니다.
> 대기열 및 주제 | limitBehavior | REJECT_ NEWEST | 메모리 제한 임계값에 도달할 때 브로커가 응답하는 방법을 지정합니다. 값은 다음과 같습니다. FLOW_CONTROL - 생성자를 느리게 합니다. REMOVE_OLDEST - 가장 오래된 메시지를 삭제합니다. REMOVE_LOW_PRIORITY - 메시지의 보존 기간을 기준으로 우선 순위가 가장 낮은 메시지를 삭제합니다(생성자 클라이언트는 메시지 삭제에 대한 알림 메시지를 받지 않음). REJECT_NEWEST - 최신 메시지를 거부합니다(생성자 클라이언트는 지속성 메시지가 거부되는 경우 예외를 받지만 비지속성 메시지가 거부되는 경우 알림 메시지를 받지 않음).
> 대기열 및 주제 | maxBytesPerMsg | -1 (제한 없음) | 대상에 허용되는 단일 메시지의 최대 크기(바이트)를 지정합니다(생성자 클라이언트는 지속성 메시지가 거부되는 경우 예외를 받지만 비지속성 메시지가 거부되는 경우 알림 메시지를 받지 않음).
> 대기열 및 주제 | maxNumProducers1 | -1 (제한 없음) | 대상에 허용되는 최대 생성자 수를 지정합니다. 이 제한에 도달하면 새로운 생성자가 만들어지지 않습니다.
> 대기열만 해당 | maxNumActiveConsumers | 1 | 대기열 대상으로부터의 로드 균형 조정 전달에서 활성 상태가 될 수 있는 최대 사용자 수를 지정합니다. 값 -1은 제한이 없음을 의미합니다(플랫폼판은 이 값을 2로 제한).
> 대기열만 해당 | maxNumBackupConsumers | 0 | 대기열 대상으로부터의 로드 균형 조정 전달 중에 오류가 발생할 경우 활성 사용자를 대신할 수 있는 백업 사용자의 최대 수를 지정합니다. 값 -1은 제한이 없음을 의미합니다.
> 대기열 및 주제 | consumerFlowLimit | 주제: 1000 대기열: 1000 | 단일 일괄 처리로 사용자에게 전달되는 최대 메시지 수를 지정합니다. 로드 균형 조정 대기열 전달에서 이 값은 로드 균형 조정이 시작되기 전에 활성 사용자에게 라우팅된 대기 메시지의 초기 수입니다("다중 사용자로의 대기열 전달" 참조). 이 제한은 해당 연결에서 대상 사용자에게 지정된 낮은 값으로 대체될 수 있습니다(Message Queue Java Client Developer's Guide의 연결 팩토리 속성 참조). 값 -1은 제한이 없음을 의미합니다.
> 대기열만 해당 | localDeliveryPreferred | false | 브로커 클러스터의 로드 균형 조정 대기열 전달에만 적용됩니다. 로컬 브로커에 사용자가 없는 경우에만 원격 사용자에게 메시지를 전달하도록 지정합니다. 대상을 로컬에만 전달로 제한해서는 안 됩니다(isLocalOnly = false).
> 대기열 및 주제 | isLocalOnly | false | 브로커 클러스터에만 적용됩니다. 대상이 다른 브로커에 복제되지 않도록 지정합니다. 따라서, 메시지가 로컬 사용자(대상을 만든 브로커에 연결된 사용자)에게만 전달되도록 지정합니다. 대상이 만들어진 이후에는 이 속성을 업데이트할 수 없습니다.
> 1. 클러스터 환경에서 이 등록 정보는 클러스터의 모든 인스턴스에 한꺼번에 적용되는 것이 아니라 클러스터에 있는 대상의 각 인스턴스에 적용됩니다.

> - 대기열 대상을 만들려면 다음과 같이 명령을 입력합니다.

> imqcmd create dst -n myQueue -t q -o "maxNumActiveConsumers=5"

> 대상 이름은 영숫자(공백 없음)만 포함하고 영문자 또는 "_" 및 "$" 문자로 시작할 수 있습니다. 매트릭 주제 대상에 예약된 "mq" 문자열로는 시작할 수 없습니다(표 2-8 참조).

> - 주제 대상을 만들려면 다음과 같이 명령을 입력합니다.

> imqcmd create dst -n myTopic -t t -o "MaxBytesPerMsg=5000"

> ### 대상 나열

> 대상의 현재 속성 값, 대상과 연관된 생성자 또는 사용자 수 및 메시징 메트릭(대상의 메시지 수 및 크기 등)에 대한 정보를 얻을 수 있습니다.

> 정보를 얻을 대상을 찾으려면 먼저 list dst 하위 명령을 사용하여 특정 브로커의 모든 대상을 나열할 수 있습니다. 예를 들어, myHost의 포트 4545에서 실행 중인 브로커의 모든 대상을 나열하려면 다음 명령을 입력합니다.

> imqcmd list dst -b myHost:4545

> list dst 하위 명령에서는 나열할 대상의 유형을 지정하거나 임시 대상을 포함하도록 지정할 수도 있습니다(-tmp 옵션 사용). 임시 대상은 일반적으로 다른 클라이언트에 보낸 메시지에 대한 응답을 수신하기 위해 클라이언트가 만듭니다("임시 대상" 참조).

> ### 대상 정보 표시

> 대상의 현재 속성 값에 대한 정보를 얻으려면 다음 명령에서처럼 query dst 하위 명령을 사용합니다.

> imqcmd query dst -t q -n XQueue -u admin -p admin

> 다음과 같은 출력이 표시됩니다.

> ------------------------------------
> Destination Name Destination Type
> ------------------------------------
> XQueue Queue
> On the broker specified by:
> -------------------------
> Host Primary Port
> -------------------------
> localhost 7676
> Destination Name XQueue
> Destination Type Queue
> Destination State RUNNING
> Created Administratively true
> Current Number of Messages 0
> Current Total Message Bytes 0
> Current Number of Producers 0
> Current Number of Active Consumers 0
> Current Number of Backup Consumers 0
> Max Number of Messages unlimited (-1)
> Max Total Message Bytes unlimited (-1)
> Max Bytes per Message unlimited (-1)
> Max Number of Producers 100
> Max Number of Active Consumers 1
> Max Number of Backup Consumers 0
> Limit Behavior REJECT_NEWEST
> Consumer Flow Limit 100
> Is Local Destination false
> Local Delivery is Preferred false

> 출력에는 해당 대상에 연관되어 있는 생성자와 사용자 수도 표시됩니다. 대기열 대상의 경우 활성 사용자와 백업 사용자도 모두 포함됩니다.

> update dst 하위 명령을 사용하여 하나 이상의 속성 값을 변경할 수 있습니다("대상 속성 업데이트" 참조).

> ### 대상 속성 업데이트

> update dst 하위 명령에 업데이트할 속성을 지정하는 -o 옵션을 사용하여 대상의 속성을 변경할 수 있습니다. 업데이트할 속성이 두 개 이상인 경우에는 -o 옵션을 두 번 이상 사용할 수 있습니다. 예를 들어, 다음 명령은 maxBytesPerMsg 속성을 1000으로 변경하고 MaxNumMsgs 속성을 2000으로 변경합니다.

> imqcmd update dst -t q -n myQueue -o "axBytesPerMsg=1000"
> -o "maxNumMsgs=2000" -u admin -p admin

> 업데이트할 수 있는 속성의 목록을 보려면 표 6-10을 참조하십시오.

> update dst 하위 명령을 사용해서 대상의 유형을 업데이트하거나 isLocalOnly 속성을 업데이트할 수 없습니다.

> ### 대상 메트릭 표시

> 대상에 대한 메시지 메트릭 정보를 얻으려면 다음 명령에서처럼 metrics dst 하위 명령을 사용합니다.

> imqcmd metrics dst -t q -n XQueue -m ttl -u admin -p admin

> 다음과 같은 출력이 표시됩니다.

> -----------------------------------------------------------------------------
> Msgs Msg Bytes Msg Count Total Msg Bytes (k) Largest
> In Out In Out Current Peak Avg Current Peak Avg Msg (k)
> -----------------------------------------------------------------------------
> 200 200 147200 147200 0 200 0 0 143 71 0
> 300 200 220800 147200 100 200 10 71 143 64 0
> 300 300 220800 220800 0 200 0 0 143 59 0

> imqcmd를 사용하여 대상 메트릭을 보고하는 방법에 대한 자세한 내용은 "모니터링 도구"를 참조하십시오.

> ### 대상 일시 중지 및 다시 시작

> 대상을 일시 중지하여 생성자에서 대상으로, 대상에서 사용자로 또는 둘 다의 메시지 전달을 제어할 수 있습니다. 특히, 대상으로의 메시지 흐름을 일시 중지하면 메시지 생성이 사용보다 훨씬 빠를 때 대상에서 메시지가 넘치는 것을 방지할 수 있습니다.

> 대상으로부터 또는 대상으로의 메시지 전달을 일시 중지하려면 다음 명령에서처럼 pause dst 하위 명령을 사용합니다.

> imqcmd pause dst -n myQueue -t q -pst PRODUCERS -u admin -p admin

> imqcmd pause dst -n myTopic -t t -pst CONSUMERS -u admin -p admin

> 대상을 일시 중지한 경우 전달을 다시 시작하려면 다음 명령을 입력합니다.

> imqcmd resume dst -n myQueue -t q

> 다중 브로커 클러스터에서 대상 인스턴스는 클러스터의 각 브로커에 있습니다. 이러한 대상을 개별적으로 일시 중지해야 합니다.

> ### 대상 제거

> 현재 대상의 대기열에 들어 있는 모든 메시지를 제거할 수 있습니다. 대상을 제거하는 것은 물리적 대상의 대기열에 들어 있는 모든 메시지를 삭제하는 것을 의미합니다. 대상에 누적된 메시지가 시스템의 자원을 너무 많이 차지하는 경우에 메시지를 제거할 수 있습니다. 이런 상황은 대기열에 등록된 사용자 클라이언트가 없는 상태에서 너무 많은 메시지를 받으면 발생할 수 있습니다. 주제의 비활성 영구 가입자가 활성화되지 않는 경우에도 발생할 수 있습니다. 두 경우 모두 불필요한 메시지가 보존됩니다.

> 대상에서 메시지를 제거하려면 다음 명령에서처럼 purge dst 하위 명령을 사용합니다.

> imqcmd purge dst -n myQueue -t q -u admin -p admin

> imqcmd purge dst -n myTopic -t t -u admin -p admin

> 브로커를 종료했다가 다시 시작할 때 오래된 메시지가 전달되지 않게 하려면 -reset messges 옵션을 사용하여 오래된 메시지를 제거합니다. 예를 들면 다음과 같습니다.

> imqbrokerd -reset messages -u admin -p admin

> 그러면 브로커를 다시 시작한 후에 대상을 제거할 필요가 없습니다.

> 다중 브로커 클러스터에서 대상 인스턴스는 클러스터의 각 브로커에 있습니다. 이러한 대상을 개별적으로 제거해야 합니다.

> ### 대상 완전 삭제

> 대상을 완전히 삭제하려면 다음 명령에서처럼 destroy dst 하위 명령을 사용합니다.

> imqcmd destroy dst -t q -n myQueue -u admin -p admin

> 대상을 완전 삭제하면 대상에 있는 모든 메시지가 제거되고 대상이 브로커에서 제거됩니다. 이 작업은 다시 되돌릴 수 없습니다.

> ### 대상 압축

> 플러그 인 JDBC 호환 데이터 저장소와 반대되는 기본 제공 파일 기반 데이터 저장소를 메시지의 영구 저장소로 사용하는 경우 디스크 사용률을 모니터하고 필요한 경우 디스크를 압축할 수 있습니다.

> 파일 기반 메시지 저장소는 메시지가 보관될 대상에 따라 다른 디렉토리에 저장되도록 구성됩니다. 각 대상 디렉토리에서 대부분의 메시지는 가변 크기 레코드로 구성되는 단일 파일인 가변 크기 레코드 파일에 저장됩니다(단편화를 줄이기 위해 크기가 구성 가능한 임계값을 초과하는 메시지는 자체의 개별 파일에 저장). 가변 크기 레코드 파일에서 다양한 크기의 메시지가 지속되다가 제거될 때 파일에서 사용 가능한 레코드가 다시 사용되지 않는 공간이 생길 수 있습니다.

> 사용되지 않은 사용 가능한 레코드를 관리하려면 명령 유틸리티의 하위 명령을 사용하여 대상별 디스크 사용률을 모니터하고 사용률이 떨어지면 사용 가능한 디스크 공간을 재생 이용합니다.

> #### 대상 디스크 사용률 모니터링

> 대상 디스크 사용률을 모니터하려면 다음 imqcmd 하위 명령을 사용합니다.

> imqcmd metrics dst -t q -n myQueue -m dsk -u admin -p admin

> 다음과 같은 출력이 표시됩니다.

> --------------------------------------
> Reserved Used Utilization Ratio
> --------------------------------------
> 806400 804096 99
> 1793024 1793024 100
> 2544640 2518272 98

> 하위 명령 출력에서 각 열의 의미는 다음과 같습니다.

> 표 6-11 대상 디스크 사용률 메트릭

> 메트릭 | 설명
> --- | ---
> 예약됨 | 활성 메시지가 보관된 레코드와 재사용 대기 중인 사용 가능한 레코드를 포함한 모든 레코드가 사용하는 디스크 공간(바이트)
> 사용됨 | 활성 메시지가 보관된 레코드에서 사용하는 디스크 공간(바이트)
> 사용률 | 예약된 디스크 공간에서 사용되는 디스크 공간의 비율. 비율이 높을수록 활성 메시지를 보관하는 데 사용되고 있는 디스크 공간이 많은 것입니다.

> #### 사용되지 않은 대상 디스크 공간 확보

> 특정 대상을 사용하는 메시징 응용 프로그램의 특성에 따라 디스크 사용률 패턴이 다릅니다. 대상에 유입 및 유출되는 메시지의 상대적 흐름과 상대적 메시지 크기에 따라 예약된 디스크 공간이 점점 더 커질 수 있습니다.

> 메시지 생성 속도가 메시지 사용 속도보다 큰 경우 사용 가능한 레코드를 다시 사용하고 사용률을 높은 수준으로 유지해야 합니다. 그러나 메시지 생성 속도가 메시지 사용 속도보다 작거나 비슷한 경우 사용률이 낮아도 됩니다.

> 일반적으로 예약된 디스크 공간은 안정적으로 유지하고 사용률은 높게 유지해야 합니다. 통상 시스템이 예약된 디스크 공간이 매우 일정하게 유지되고 사용률이 높은(75% 이상) 안정적인 상태에 도달하는 경우 사용되지 않는 디스크 공간을 확보할 필요가 없습니다. 시스템이 안정적인 상태에 도달하고 사용률이 낮은(50% 이하) 경우 디스크를 압축하여 사용 가능한 레코드가 사용 중인 디스크 공간을 확보할 수 있습니다.

> 예약된 디스크 공간이 점점 증가하는 경우 대상 메모리 제한 등록 정보와 제한 동작(표 6-10 참조)을 설정하여 대상의 메모리 관리를 다시 구성해야 합니다.

> ##### 사용되지 않는 대상 디스크 공간을 확보하는 방법

> 1. 대상을 일시 중지합니다.

> imqcmd pause dst -t q -n myQueue -u admin -p admin

> 2. 디스크를 압축합니다.

> imqcmd compact dst -t q -n myQueue -u admin -p admin

> 3. 대상을 다시 시작합니다.

> imqcmd resume dst -t q -n myQueue -u admin -p admin

> 대상 유형과 이름을 지정하지 않으면 이 작업이 모든 대상에 대해 수행됩니다.

> ##

> 영구 가입 관리

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

> 표 6-12에서는 imqcmd 영구 가입 하위 명령을 요약합니다. 기본(localhost:7676) 브로커가 아닌 경우 브로커의 호스트 이름과 포트를 지정해야 합니다.

> 표 6-12 영구 가입 관리에 사용되는 imqcmd 하위 명령

> 하위 명령 | 설명
> --- | ---
> list dur -d destName | 지정한 대상의 모든 영구 가입을 나열합니다.
> destroy dur -n subscrName -c client_id | 지정한 클라이언트 식별자에 해당하는 지정된 영구 가입을 완전 삭제합니다("클라이언트 식별자" 참조).
> purge dur -n subscrName -c client_id | 지정한 클라이언트 식별자에 해당하는 지정된 영구 가입에 대한 모든 메시지를 제거합니다("클라이언트 식별자" 참조).

> 예를 들어, 다음 명령은 SPQuotes 주제의 모든 영구 가입을 나열합니다.

> imqcmd list dur -d SPQuotes

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

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

> list dur 하위 명령에서 반환된 정보를 사용하여 완전 삭제하거나 메시지를 제거할 영구 가입을 확인할 수 있습니다. 가입 이름과 클라이언트 아이디를 사용하여 가입을 확인합니다. 예를 들면 다음과 같습니다.

> imqcmd destroy dur -n myDurable -c myClientID

> ##

> 트랜잭션 관리

> 클라이언트 응용 프로그램에서 시작하는 모든 트랜잭션은 브로커에서 추적됩니다. 이는 단순한 Message Queue 트랜잭션일 수도 있고 XA 자원 관리자가 관리하는 분산 트랜잭션일 수도 있습니다("로컬 트랜잭션" 참조). 모든 트랜잭션에는 브로커의 트랜잭션을 고유하게 나타내는 64비트 숫자, 즉 Message Queue 트랜잭션 아이디가 있습니다. 분산 트랜잭션에도 분산 트랜잭션 관리자가 할당하는 최대 128바이트의 분산 트랜잭션 아이디(XID)가 있습니다. Message Queue에서는 Message Queue 트랜잭션 아이디와 XID 사이의 연결을 보존합니다.

> 분산 트랜잭션에 오류가 발생하면 그 트랜잭션은 PREPARED 상태로 남아 완결되지 않을 수도 있습니다. 따라서 관리자는 준비된 상태로 남아 있는 트랜잭션을 모니터하고 롤백 또는 완결해야 합니다.

> 표 6-13에서는 imqcmd 트랜잭션 하위 명령을 요약합니다. 기본(localhost:7676) 브로커가 아닌 경우 브로커의 호스트 이름과 포트를 지정해야 합니다.

> 표 6-13 트랜잭션 관리에 사용되는 imqcmd 하위 명령

> 하위 명령 | 설명
> --- | ---
> list txn | 브로커에서 추적하는 모든 트랜잭션을 나열합니다.
> query txn -n transaction_id | 지정한 트랜잭션에 대한 정보를 나열합니다.
> commit txn -n transaction_id | 지정한 트랜잭션을 완결합니다.
> rollback txn -n transaction_id | 지정한 트랜잭션을 롤백합니다.

> 예를 들어, 다음 명령은 브로커에 있는 모든 트랜잭션을 나열합니다.

> 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로 설정되어 있으면(표 2-4 참조) 브로커를 시작할 때 PREPARED 상태인 트랜잭션을 수동으로 완결 또는 롤백해야 합니다.

> list 하위 명령도 트랜잭션에서 생성된 메시지의 수와 트랜잭션에서 확인 응답된(#Msgs/#Acks) 메시지의 수를 표시합니다. 트랜잭션이 완결될 때까지는 이런 메시지가 전달되지 않으며 확인 응답이 처리되지도 않습니다.

> query 하위 명령을 사용하면 같은 정보와 클라이언트 아이디, 연결 아이디, 분산 트랜잭션 아이디(XID) 등의 여러 추가 값을 볼 수 있습니다. 예를 들면 다음과 같습니다.

> 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 acknowledgements 0
> Number of messages 4
> State PREPARED
> Transaction ID 64248349708800
> User name guest
> XID
> 6469706F6C7369646577696E6465723130313234313431313030373230

> commit 및 rollback 하위 명령은 분산 트랜잭션을 완결 또는 롤백할 때 사용할 수 있습니다. 앞에서 설명한 것과 같이, PREPARED 상태에 있는 트랜잭션만 완결 또는 롤백할 수 있습니다. 예를 들면 다음과 같습니다.

> imqcmd commit txn -n 64248349708800

> 브로커를 시작할 때 PREPARED 상태에 있는 트랜잭션을 자동으로 롤백하도록 브로커를 구성할 수도 있습니다. 자세한 내용은 표 2-4의 imq.transaction.autorollback 등록 정보를 참조하십시오.

> 이전 목차 색인 다음

> Copyright 2004 Sun Microsystems, Inc. 모든 권리는 저작권자의 소유입니다.