메시지 브로커는 다양한 전송 프로토콜을 사용하여 응용 프로그램과 관리 클라이언트를 모두 지원하는 다양한 연결 서비스를 제공할 수 있습니다. 연결 서비스와 관련된 브로커 구성 등록 정보는 연결 등록 정보에 나와 있습니다.
표 4–1은 다음의 두 가지 특성으로 구별되는 사용 가능한 연결 서비스를 보여줍니다.
표 4–1 Message Queue 연결 서비스
서비스 이름 |
서비스 유형 | |
---|---|---|
NORMAL | ||
NORMAL | ||
NORMAL | ||
NORMAL | ||
ADMIN |
TCP |
|
ADMIN |
TLS(SSL 기반 보안) |
브로커의 imq.service.activelist 등록 정보를 설정하면 이러한 연결 서비스 중 하나 또는 모두를 실행하도록 해당 등록 정보를 구성할 수 있습니다. 이 등록 정보의 값은 브로커가 시작될 때 활성화될 연결 서비스 목록입니다. 등록 정보가 명시적으로 지정되지 않은 경우 기본적으로 jms 및 admin 서비스가 활성화됩니다.
각 연결 서비스는 특정 인증 및 권한 부여 기능도 지원합니다. 자세한 내용은 보안 서비스를 참조하십시오.
각 연결 서비스는 호스트 이름(또는 IP 주소)과 포트 번호로 지정되는 특정 포트에 사용할 수 있습니다. 서비스의 정적 포트 번호를 명시적으로 지정하거나 브로커의 포트 매퍼를 동적으로 할당할 수 있습니다. 포트 매퍼 자체는 일반적으로 표준 포트 번호 7676에 있는 브로커의 기본 포트에 있습니다. 필요할 경우, 브로커 구성 등록 정보 imq.portmapper.port를 사용하여 다른 포트 번호로 대체할 수도 있습니다. 기본적으로 각 연결 서비스는 시작 시 포트 매퍼와 함께 자체적으로 등록됩니다. 클라이언트가 브로커에 대한 연결을 생성하면 Message Queue 클라이언트 런타임은 먼저 포트 매퍼에 연결하여 원하는 연결 서비스에 사용할 포트 번호를 요청합니다.
또는 포트 매퍼를 무시하고 imq.serviceName.protocolType. port 구성 등록 정보(여기서 serviceName 및 protocolType은 표 4–1에 나와 있는 특정 연결 서비스를 나타냄)를 사용하여 연결 서비스에 정적 포트 번호를 명시적으로 할당할 수 있습니다. jms, ssljms, admin 및 ssladmin 연결 서비스만 이러한 방식으로 구성할 수 있고, httpjms 및 httpsjms 서비스는 부록 C, HTTP/HTTPS 지원에 설명된 대로 다른 구성 등록 정보를 사용합니다. 그러나, 일반적으로 정적 포트는 방화벽을 통해 연결을 생성하는 경우( 방화벽을 통해 연결 참조)처럼 특수한 경우에만 사용되며 일반 용도로는 바람직하지 않습니다.
두 개 이상의 호스트(예: 컴퓨터에 두 개 이상의 네트워크 카드가 설치된 경우)를 사용할 수 있는 경우에는 브로커 등록 정보를 사용하여 연결 서비스가 바인드해야 할 호스트를 지정할 수 있습니다. imq.hostname 등록 정보는 모든 연결 서비스를 위한 단일 기본 호스트를 지정합니다. 그리고 나서 필요할 경우 imq.serviceName. protocolType.hostname(jms, ssljms, admin 또는 ssl 관리 서비스용) 또는 imq.portmapper.hostname(포트 매퍼 자체용)을 사용하여 대체할 수 있습니다.
여러 포트 매퍼 요청을 동시에 받는 경우 이러한 요청은 작업을 기다리는 동안 운영 체제 백로그에 저장됩니다. imq.portmapper.backlog 등록 정보는 이와 같은 백로그 요청의 최대 수를 지정합니다. 이 제한을 초과하면 백로그가 줄어들 때까지 후속 요청이 거부됩니다.
각 연결 서비스는 다중 스레드 방식으로서, 다중 연결을 지원합니다. 이러한 연결에 필요한 스레드는 브로커에서 각 서비스의 개별 스레드 풀로 유지 관리됩니다. 연결에 필요한 스레드는 해당 연결을 지원하는 서비스의 스레드 풀에 추가됩니다.
선택한 스레딩 모델은 스레드가 단일 연결 전용인지 또는 여러 연결에서 공유할지 여부를 지정합니다.
전용 모델에서 브로커에 대한 각 연결에는 두 개의 스레드(받는 메시지용 및 보내는 메시지용)가 필요합니다. 따라서 지원할 수 있는 연결 수는 제한되지만 성능은 향상됩니다.
공유 모델에서 메시지를 보내고 받는 경우 공유 스레드에서 연결을 처리합니다. 각 연결에서는 전용 스레드를 필요로 하지 않기 때문에 이 모델은 사용 가능한 연결 수를 증가시키지만 스레드 관리에 필요한 추가 오버헤드로 인해 성능이 저하됩니다.
브로커의 imq.serviceName. threadpool_model 등록 정보는 두 모델 중에서 해당 연결 서비스에 사용할 모델을 지정합니다. 이 등록 정보는 두 가지 문자열 값(dedicated 또는 shared) 중 하나를 사용합니다. 등록 정보를 명시적으로 설정하지 않으면 기본적으로 dedicated로 간주됩니다.
또한 브로커 등록 정보 imq.serviceName. min_threads 및 imq.serviceName. max_threads를 설정하여 서비스 스레드 풀의 최대 및 최소 스레드 수를 지정할 수 있습니다. 사용 가능한 스레드 수가 지정된 최소 임계값을 초과하는 경우 Message Queue는 최소 임계값에 다시 도달할 때까지 스레드를 종료시켜 여유 스레드를 확보하는 방법으로 메모리 자원을 절약합니다. 로드량이 많은 경우 풀의 최대 수에 도달할 때까지 스레드 수가 증가할 수 있습니다. 이러한 경우 스레드를 사용할 수 있을 때까지 새 연결이 거부됩니다.
공유 스레딩 모델에서는 분산자 스레드를 사용하여 스레드를 활성 연결에 할당합니다. 브로커 등록 정보 imq.shared.connectionMonitor_limit는 단일 분산자 스레드에서 모니터링할 수 있는 최대 연결 수를 지정합니다. 이 등록 정보 값이 작을수록 스레드를 연결에 더 빨리 할당할 수 있습니다. imq.ping.interval 등록 정보는 브로커가 활성 여부를 확인하기 위해 연결을 주기적으로 테스트(“핑”)하는 시간 간격(초)을 지정합니다. 따라서 시도한 메시지 전송이 실패하기 전에 먼저 연결 실패를 감지할 수 있습니다.