각 연결 서비스는 다중 스레드 방식으로서, 다중 연결을 지원합니다. 이러한 연결에 필요한 스레드는 브로커에서 각 서비스의 개별 스레드 풀로 유지 관리됩니다. 연결에 필요한 스레드는 해당 연결을 지원하는 서비스의 스레드 풀에 추가됩니다.
선택한 스레딩 모델은 스레드가 단일 연결 전용인지 또는 여러 연결에서 공유할지 여부를 지정합니다.
전용 모델에서 브로커에 대한 각 연결에는 두 개의 스레드(받는 메시지용 및 보내는 메시지용)가 필요합니다. 따라서 지원할 수 있는 연결 수는 제한되지만 성능은 향상됩니다.
공유 모델에서 메시지를 보내고 받는 경우 공유 스레드에서 연결을 처리합니다. 각 연결에서는 전용 스레드를 필요로 하지 않기 때문에 이 모델은 사용 가능한 연결 수를 증가시키지만 스레드 관리에 필요한 추가 오버헤드로 인해 성능이 저하됩니다.
브로커의 imq.serviceName. threadpool_model 등록 정보는 두 모델 중에서 해당 연결 서비스에 사용할 모델을 지정합니다. 이 등록 정보는 두 가지 문자열 값(dedicated 또는 shared) 중 하나를 사용합니다. 등록 정보를 명시적으로 설정하지 않으면 기본적으로 dedicated로 간주됩니다.
또한 브로커 등록 정보 imq.serviceName. min_threads 및 imq.serviceName. max_threads를 설정하여 서비스 스레드 풀의 최대 및 최소 스레드 수를 지정할 수 있습니다. 사용 가능한 스레드 수가 지정된 최소 임계값을 초과하는 경우 Message Queue는 최소 임계값에 다시 도달할 때까지 스레드를 종료시켜 여유 스레드를 확보하는 방법으로 메모리 자원을 절약합니다. 로드량이 많은 경우 풀의 최대 수에 도달할 때까지 스레드 수가 증가할 수 있습니다. 이러한 경우 스레드를 사용할 수 있을 때까지 새 연결이 거부됩니다.
공유 스레딩 모델에서는 분산자 스레드를 사용하여 스레드를 활성 연결에 할당합니다. 브로커 등록 정보 imq.shared.connectionMonitor_limit는 단일 분산자 스레드에서 모니터링할 수 있는 최대 연결 수를 지정합니다. 이 등록 정보 값이 작을수록 스레드를 연결에 더 빨리 할당할 수 있습니다. imq.ping.interval 등록 정보는 브로커가 활성 여부를 확인하기 위해 연결을 주기적으로 테스트(“핑”)하는 시간 간격(초)을 지정합니다. 따라서 시도한 메시지 전송이 실패하기 전에 먼저 연결 실패를 감지할 수 있습니다.