12장. 메시지 분할 및 메시지 분리
AMQ Broker에서는 클라이언트 애플리케이션 논리를 변경하지 않고 메시지를 한 주소에서 다른 주소로 투명하게 전환할 수 있는 diverts 라는 오브젝트를 구성할 수 있습니다. 메시지 사본을 지정된 전달 주소로 전달하여 메시지 흐름을 효과적으로 분할하도록 할 수도 있습니다.
12.1. 메시지 일괄 처리 방법
diverts를 사용하면 클라이언트 애플리케이션 논리를 변경하지 않고 한 주소로 라우팅된 메시지를 다른 주소로 투명하게 전환할 수 있습니다. 브로커 서버의 회전 집합을 메시지의 라우팅 테이블 유형으로 고려해 보십시오.
반전은 배타적 일 수 있습니다. 즉, 메시지가 원래 주소로 이동하지 않고 지정된 전달 주소로 전환됩니다.
즉, 메시지는 원래 주소로 계속 이동하는 반면 브로커는 메시지 사본을 지정된 전달 주소로 보냅니다. 따라서 메시지 흐름을 분할하는 데 비독점(non-exclusive diverts)을 사용할 수 있습니다. 예를 들어 주문 큐로 전송된 모든 순서를 별도로 모니터링하려면 메시지 흐름을 분할할 수 있습니다.
주소에 exclusive 및 non-exclusive diverts가 모두 구성된 경우 브로커는 먼저 배타적인 diverts를 처리합니다. 특정 메시지가 이미 배타적인 일괄 처리로 전환된 경우 브로커는 해당 메시지에 대한 비독점(non-exclusive diverts)을 처리하지 않습니다. 이 경우 메시지는 원래 주소로 절대 이동하지 않습니다.
브로커가 메시지를 반전하면 브로커는 새 메시지 ID를 할당하고 메시지 주소를 새 전달 주소로 설정합니다. _AMQ_ORIG_ADDRESS
(문자열 유형) 및 _AMQ_ORIG_MESSAGE_ID
(long type) 메시지 속성을 통해 원본 메시지 ID 및 주소 값을 검색할 수 있습니다. Core API를 사용하는 경우 Message.HDR_ORIGINAL_ADDRESS
및 Message.HDR_ORIG_MESSAGE_ID
속성을 사용합니다.
메시지를 동일한 브로커 서버의 주소로만 전환할 수 있습니다. 다른 서버의 주소로 전환하려는 경우 공통 솔루션은 먼저 메시지를 로컬 저장소 및 전달 큐로 전환하는 것입니다. 그런 다음 해당 큐에서 사용하는 브릿지를 설정하고 메시지를 다른 브로커의 주소로 전달합니다. 가상 네트워크를 브리지와 결합하면 지리적으로 분산된 브로커 서버 간에 라우팅 연결의 분산 네트워크를 생성할 수 있습니다. 이러한 방식으로 글로벌 메시징 메시를 생성할 수 있습니다.