3 개의 다른 외부 시스템을 연결하는 애플리케이션이 있다고 가정 해보십시오. 모두 3을 업데이트해야합니다. 실패한 경우 작업을 롤백해야합니다. 이것은 구현하기가 어렵지 않지만 작업 3이 실패하고 롤백 할 때 작업 1의 롤백이 실패했다고 말합니다! 이제 첫 번째 외부 시스템이 유효하지 않은 상태입니다 ...여러 트랜잭션이없는 외부 시스템에서의 원자 적 작동
가능한 해결책은 응용 프로그램을 종료하고 외부 시스템의 수동 수정을 강요하지만 다시 시도하는 것입니다. 이 정보를 사용했기 때문에 (또는 아마도 그것이 실패한 이유 일 수도 있습니다) 충분한 액세스 권한이 없을 수도 있습니다. 아니면 액션을 롤백하는 좋은 방법이 아닐 수도 있습니다!
이러한 사례를 처리하는 좋은 방법이 있습니까?
편집 : 일부 응용 프로그램 세부 정보 ..
다중 사용자 웹 응용 프로그램입니다. 대부분의 작업은 Quartz.Net을 통해 예약 된 작업으로 수행되므로 대부분의 작업은 자체 스레드에서 실행됩니다. 일부 사용자 작업은 여러 시스템을 업데이트하는 작업을 트리거해야합니다. 외부 시스템은 다소 불안정합니다.
내가 나쁜 생각이 될 수있는 응용 프로그램을 종료, 응용 프로그램 (기업 대 단일 사용자)의 크기에 따라 작업 패턴
외부 시스템이 고정되어 있습니까? 또는 수정할 수 있습니까? – bmargulies