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