14.5. 클러스터형 메시지 그룹화 구성
메시지 그룹화를 사용하면 클라이언트가 동일한 소비자에 의해 직렬적으로 특정 유형의 메시지 그룹을 보낼 수 있습니다. 클러스터의 각 브로커에 그룹화 처리기를 추가하면 클라이언트가 클러스터의 모든 브로커에 그룹화된 메시지를 보내고 동일한 소비자가 해당 메시지를 올바른 순서로 사용할 수 있는지 확인합니다.
클러스터링은 병렬 처리를 제공하여 수평으로 확장할 수 있는 반면, 그룹화는 특정 소비자에게 메시지를 직접 그룹화할 수 있는 직렬화 기술을 제공합니다.
클러스터링 또는 그룹화를 사용하고 클러스터링과 그룹화를 함께 사용하지 않는 것이 좋습니다.
그룹화 핸들러에는 로컬 핸들러와 원격 핸들러 의 두 가지 유형이 있습니다. 브로커 클러스터는 의도한 소비자가 올바른 순서로 사용할 수 있도록 특정 그룹의 모든 메시지를 적절한 대기열로 라우팅할 수 있습니다.
사전 요구 사항
클러스터의 각 브로커에 하나 이상의 소비자가 있어야 합니다.
메시지가 대기열의 소비자에게 고정되면 동일한 그룹 ID를 가진 모든 메시지가 해당 큐로 라우팅됩니다. 소비자가 제거되면 소비자가 없는 경우에도 큐는 메시지를 계속 수신합니다.
절차
클러스터의 하나의 브로커에서 로컬 처리기를 구성합니다.
고가용성을 사용하는 경우 마스터 브로커여야 합니다.
-
브로커의 <
broker_instance_dir> /etc/broker.xml
구성 파일을 엽니다. <
core>
요소 내에 로컬 처리기를 추가합니다.로컬 처리기는 원격 처리기에 대한 중재자 역할을 합니다. 경로 정보를 저장하고 이를 다른 브로커에게 전달합니다.
<configuration> <core> ... <grouping-handler name="my-grouping-handler"> <type>LOCAL</type> <timeout>10000</timeout> </grouping-handler> ... </core> </configuration>
grouping-handler
-
name
특성을 사용하여 그룹화 처리기의 고유한 이름을 지정합니다. type
-
이 값을
LOCAL
으로 설정합니다. timeout
메시지를 라우팅할 위치에 대한 결정을 내릴 때까지 대기하는 시간(밀리초)입니다. 기본값은 5000밀리초입니다. 라우팅 결정을 내리기 전에 시간 초과에 도달하면 엄격한 메시지 순서를 확인하는 예외가 throw됩니다.
브로커가 그룹 ID를 사용하여 메시지를 수신하면 소비자가 연결된 큐에 대한 경로를 제안합니다. 클러스터의 다른 브로커의 그룹화 핸들러에서 경로를 허용하는 경우 경로가 설정됩니다. 클러스터의 모든 브로커는 이 그룹 ID를 사용하여 해당 큐로 메시지를 전달합니다. 브로커의 경로 제안이 거부되면 경로가 수락될 때까지 프로세스를 반복하여 대체 경로를 제안합니다.
-
브로커의 <
고가용성을 사용하는 경우 로컬 처리기 구성을 마스터 브로커의 슬레이브 브로커에 복사합니다.
로컬 처리기 구성을 슬레이브 브로커에 복사하면 로컬 처리기에 대한 단일 실패 지점이 방지됩니다.
클러스터의 나머지 각 브로커에서 원격 핸들러를 구성합니다.
-
브로커의 <
broker_instance_dir> /etc/broker.xml
구성 파일을 엽니다. <
core>
요소 내에 원격 처리기를 추가합니다.<configuration> <core> ... <grouping-handler name="my-grouping-handler"> <type>REMOTE</type> <timeout>5000</timeout> </grouping-handler> ... </core> </configuration>
grouping-handler
-
name
특성을 사용하여 그룹화 처리기의 고유한 이름을 지정합니다. type
-
이 값을
REMOTE
(REMOTE)로 설정합니다. timeout
- 메시지를 라우팅할 위치에 대한 결정을 내릴 때까지 대기하는 시간(밀리초)입니다. 기본값은 5000밀리초입니다. 이 값을 로컬 처리기 값의 절반 이상으로 설정합니다.
-
브로커의 <
추가 리소스
-
메시지 그룹화를 위해 구성
된 브로커 클러스터의 예는 클러스터형 그룹화 AMQ Broker 예제 프로그램을
참조하십시오.