새 메일을 여러 사서함에서 모니터링하는 Windows 서비스가 있습니다. 새 메일이 도착하면 서비스가 처리 할 책임을 결정합니다. 그것을 파싱하여 데이터베이스에 입력하거나, 무시하거나, 인식하지 못하면 누군가에게 전달할 수 있습니다.다른 모든 작업을 수행하는 동안 오프라인 데이터베이스 다루기?
성공적으로 완료 될 때까지 n 분마다 서비스가 시도되고 다시 시도되는 이메일 서버가 다운 된 경우 이미 작동 중입니다. 다른 문제는 데이터베이스 서버가 다운 될 경우 어떻게되는지입니다. 우리의 서비스는 여전히 잘 실행되고 전자 메일을 파싱 할 수 있지만 데이터베이스 삽입이 실패하면 중단됩니다.
데이터베이스가 다운되는 것을 어떻게 처리합니까? 내 서비스가 데이터베이스와 상호 작용해야하는 대신 NServiceBus와 같은 메시징 프레임 워크를 사용하여 추가해야하는 새 항목마다 메시지를 보냅니다. 그런 다음이 서비스가 시도하고 처리합니다. 어떤 이유로 든 처리가 실패한 경우 (대개 데이터베이스가 다운되었을 가능성이 있음) 나중에 처리 할 수 있도록 대기열에 항목을 남겨두기 만하면됩니까?
마지막 단락에 해당 : MSMQ와 같은 안정적인 메시징 대기열 프로토콜을 살펴보십시오. DB가 다운되면 서비스는 계속 작동 할 수 있으며 작업 대기열은 DB가 백업 될 때까지 큐에 대기합니다. 대기중인 모든 메시지가 전달됩니다. –