2011-11-18 2 views
2

Windows 서비스로 nservicebus 프로그램을 설치했습니다. Windows 서비스를 중지하면 현재 메시지 처리기가 완료 될 때까지 NserviceBus가 대기합니까?Windows 서비스가 중지되면 NserviceBus가 메시지 처리를 완료합니까?

대답이 아니오이면 절반의 작업을 수행 할 수 있으며 내 프로그램이 데이터베이스를 사용하는 경우 잘못된 상태로 표시 될 수 있습니다.

저는 실험을했습니다. 메시지를받을 때 Thread.Sleep (100 * 1000)을 수행하는 프로그램을 만들었습니다. 메시지 처리 중에 Windows 서비스를 중지하면 빠르게 중지되고 100 초 동안 기다리지 마십시오. 그래서 그 대답은 '아니오'라고 가정합니다.

대답이 '예'인 경우, 그런 일이 발생하는 곳의 소스 코드로 안내해주십시오.

답변

2

NSB는 대기하지 않으므로 현재 메시지가 대기열로 롤백됩니다. 모든 핸들러는 트랜잭션으로 실행되므로 일관성없는 상태가 될 위험이 없어야합니다. 데이터베이스가 dtc 트랜잭션에 등록되었다고 가정합니다. 그렇지 않으면 어쨌든 일관성이 없으므로 모든 배팅이 해제됩니다.

+0

Thx. 이것이 내가 원하는 대답이다. – struhtanov

관련 문제