클라이언트 수 또는 연결 수가 증가하면 병목 현상 해소 또는 성능 향상을 위해 메시지 서비스 확장이 필요할 수 있습니다. Message Queue 메시지 서비스는 사용자의 필요에 따라 많은 확장 옵션을 제공합니다. 이러한 옵션은 편의상 다음과 같은 범주로 정렬될 수 있습니다.
수직 확장은 처리 능력을 늘리고 사용 가능한 자원을 확장하는 것입니다. 프로세서 또는 메모리를 추가하거나, 공유 스레드 모델로 전환하거나, Java VM을 64비트 모드로 실행하여 수직 확장을 할 수 있습니다.
지점 간 도메인을 사용하는 경우에는 여러 소비자가 하나의 대기열에 액세스하도록 허용하여 소비자 측면을 확장할 수 있습니다. 이 방법을 사용할 경우 최대 활성 및 백업 소비자 수를 지정할 수 있습니다. 또한 로드 균형 조정 메커니즘에서는 소비자의 현재 용량과 메시지 처리 속도를 고려합니다. 이는 Message Queue의 기능입니다. (JMS 사양은 단일 소비자가 대기열에 액세스할 때의 메시징 동작을 정의합니다. 여러 소비자의 액세스가 허용되는 대기열에 대한 동작은 공급자별로 다릅니다. 이 확장 옵션에 대한 자세한 내용은 Message Queue 개발 안내서를 참조하십시오.)
상태 없는 수평 확장은 브로커를 추가한 다음 해당 브로커에 기존 클라이언트를 재배포하여 이루어집니다. 이 방법은 쉽게 구현할 수 있지만, 메시징 작업이 독립 작업 그룹으로 분류될 수 있는 경우에만 적합합니다.
상태 있는 수평 확장은 브로커를 클러스터에 연결하여 이루어집니다. 브로커 클러스터에서 각 브로커는 로컬 응용 프로그램 클라이언트뿐만 아니라 클러스터에 있는 모든 다른 브로커에도 연결됩니다. 브로커는 동일한 호스트에 있거나 네트워크에 분산될 수 있습니다. 대상 및 소비자에 대한 정보가 클러스터에 있는 모든 브로커에 복제됩니다. 대상 또는 가입자에 대한 업데이트가 함께 전파되므로, 각 브로커는 직접 연결된 제작자로부터 클러스터의 다른 브로커에 연결된 소비자로 메시지를 라우팅할 수 있습니다. 백업 소비자가 사용되는 환경에서 하나의 브로커나 연결이 실패할 경우, 액세스할 수 없는 소비자에게 보낸 메시지를 다른 브로커의 백업 소비자에게 전달할 수 있습니다.
브로커 또는 연결이 실패할 경우 영구 항목(대상 및 영구 가입)에 대한 상태 정보가 동기화되지 않을 수 있습니다. 예를 들어 클러스터된 브로커가 중단되어 대상이 클러스터에 있는 다른 브로커에 생성되고 첫 번째 브로커가 다시 시작될 경우, 해당 브로커는 새 대상에 대해 알 수 없습니다. 이 문제를 사전에 방지하기 위해 클러스터의 한 브로커를 마스터 브로커로 지정할 수 있습니다. 이 브로커는 마스터 구성 파일에서 대상 및 영구 가입에 대한 모든 변경을 추적하고, 클러스터에서 일시적으로 오프라인 상태인 브로커를 업데이트합니다. 자세한 내용은 4 장, 브로커 클러스터를 참조하십시오.
마스터 브로커를 사용하더라도 Message Queue는 브로커 또는 연결이 실패할 경우 서비스 가용성만 제공하며 데이터 가용성은 제공하지 않습니다. 예를 들어 클러스터된 브로커를 사용할 수 없는 경우, 해당 브로커에 보관된 모든 영구 메시지는 브로커가 복구될 때까지 사용할 수 없습니다. 현재는 SunCluster Message Queue 에이전트를 통해서만 데이터 가용성이 제공됩니다. 이 경우 영구 저장소는 공유 파일 시스템에 유지됩니다. 브로커가 실패할 경우 두 번째 노드의 Message Queue 에이전트가 공유 저장소를 인계할 브로커를 시작합니다. 클라이언트가 해당 브로커에 다시 연결되므로 영구 데이터에 대한 액세스와 서비스가 지속됩니다.