먼저 알아야 할 점은 응용 프로그램이 수평 적으로 확장하기 위해 메시지 친 화성을 제거하도록 설계되어야한다는 것입니다. 메시징 전송이 응용 프로그램의 설계 제한 사항을 극복하기 위해 수행 할 수있는 예상치에는 한계가 있습니다. 메시지 페이로드 콘텐츠를 기반으로 메시지 전달 경로, 시퀀스 또는 대상을 변경하는 처리는 전송이 아닌 ESB의 작업입니다. 최적의 솔루션은 수평 확장에 적합한 아키텍처로 응용 프로그램을 재 설계하는 것입니다.
즉, 이렇게하는 한 가지 방법은 메시지 그룹을 사용하는 것입니다. 새 그룹을 찾는 응용 프로그램 인스턴스는 JMSXGroupID
이 1
이 아닌 메시지를 무시해야합니다. 메시지를 보내는 응용 프로그램은 그에 따라 그룹 ID와 일련 번호를 설정해야합니다.
이 작업을 수행하는 또 다른 방법은 가로 채기 및 발송입니다. 프로그램은 주 큐를 읽고 ID의 새로운 인스턴스를 찾습니다. 새 ID를 볼 때 해당 ID가 하나의 메시지를 별도의 디스패치 큐로 이동시킵니다. 소비하는 응용 프로그램 인스턴스는 모두 작업을 찾고있는 디스패치 대기열을 읽습니다. 이 큐의 ID는 고유하기 때문에 각 ID는 특정 응용 프로그램 인스턴스에 할당됩니다. 그런 다음 처리 할 ID에 대한 선택기를 사용하여 기본 대기열을 엽니 다. 생산자 응용 프로그램은 선택을 가능하게하기 위해 ID를 메시지 등록 정보 또는 상관 ID 필드로 설정해야하지만 그룹을 관리 할 필요가 없습니다.