하위 오케스트레이션을 시작하기 위해 마스터 오케스트레이션이 필요하다고 생각하지 않습니다. 호송 패턴을 암시하는 마스터 오케스트레이션에 대해 이야기하고 있지 않다는 사실을 확신합니다. 그래서, 그렇다면, 내가 할 수있는 일이 여기 있습니다.
싱글 톤 오케스트레이션을 구현하는 방법에 대한 간단한 예제 here이 있습니다. 이 예에서는 한 번만 존재할 오케스트레이션을 설정하는 방법을 보여줍니다. 그것으로가는 모든 메시지는 영수증의 순서대로 나열되어 한 번에 하나씩 처리됩니다. 귀하의 예는 고객 ID로이 작업을 수행하고자한다는 점에서 다릅니다. 이것은 매우 간단합니다. 인바운드 메시지에서 고객 ID를 승격시키고 상관 유형에 추가하십시오. 이제 고객 당 하나의 오케스트레이션 인스턴스 만있을 것입니다.
싱글 톤의 문제점은 다음과 같습니다. 당신은 어떤 시점에서 그들을 죽여야 만합니다. 그렇지 않으면 탈주 된 오케스트레이션으로 영원히 살 수 있습니다. 그래서, 당신은 그들을 끝내야합니다.특정 고객이 마지막 메시지에 대해 오케스트레이션에게 특성 등을 통해 죽을 때 신호를 보내는 방법이 있으면이 작업을 수행 할 수 있습니다. 이것이 가능하지 않으면 타이머를 설정해야합니다. x 초 안에 메시지가 수신되지 않으면 orch를 종료하십시오. 이것은 모두하기는 쉽지만 좀비를 소개 할 수 있습니다. 좀비는 오케스트레이션이 종료 될 때 해당 고객의 다른 메시지가 들어올 때 발생합니다. 대개 대기 시간을 두 배로 늘리면 해결할 수 있습니다. 그럼에도 불구하고 가끔씩 좀비가 발생합니다.
메모 필드에서. 우리는이 작업을 수행했으며 실제로 장기적인 해결책은 아닙니다. 우리는 고객 정보 업데이트를 받고 있었으며 주문 처리를 보장해야했습니다. 우리는이 싱글 톤 접근법을 수행했으며 좀비 문제와 예외 문제로 인해 문제가있었습니다. Singleton 오케스트레이션이 예외를 throw하면 해당 고객에 대한 모든 향후 메시지에 대한 처리가 차단됩니다. 따라서 가능한 모든 예외를 처리하십시오. 실제 솔루션은 파 엔드 시스템에 업데이트 메시지의 타임 스탬프를 확인하고 마지막 업데이트보다 오래된 메시지를 삭제하는 것이 었습니다. 우리는이 방법을 원했지만 수신 시스템은이 추가 작업을 수행하기를 원하지 않았습니다.
크리스. 나는 다른 방식으로 그것을 끝내었다. 아직 단일 오케스트레이션을 사용하여 메시지를 받고 새 오케스트레이션을 시작하지만 시작 오케스트레이션 셰이프는 필요하지 않습니다. 내가받는 메시지의 데이터에 따라 다른 하위 오케스트레이션을 시작해야하기 때문에이 주요 오케스트레이션이 필요합니다. –
주문 처리는 어떻게 처리 했습니까? –