2009-10-19 2 views
0

시나리오에는 :MSMQ 지연 문제를 처리하는 방법은 무엇입니까?

기능 A는() -> 메시지를 생성하고

수신기 큐에 메시지를두고 - 큐에> 검사 끊임없이 프로그래머 경우 메시지 및 프로세스에 서비스로 전송 그것 하고 결과를 얻을 DB에

기능 B를() 결과를 삽입 ->) 서비스가 (아직 나오지과 기능 B되지 않은에서 결과를 가정 DB를

의 결과를 얻을 지금이라고 , tht 메시지 ID에 대한 레코드는 db에서 null을 반환합니다. 그 결과는 아직 삽입되지 않았습니다.

그런 장면을 어떻게 처리합니까?

답변

3

함수 B가 서비스 완료 처리에 종속되어 있으면 메시지 대기열에서도 실행해야합니다.

서비스가 완료되면 다른 대기열에 새 메시지를 작성해야합니다. 다른 청취자가이를 받아서 함수 B를 호출해야합니다.

사용자 인터페이스 제스처로 함수 B가 시작된 경우 UI는 필요한 프로세스가 완료되지 않았 음을 전달하고 전달할 때까지 해당 작업을 허용하지 않아야합니다.

+0

대기열 또는 이벤트 - 일단 청취자가 이벤트를 데이터베이스에 삽입하면 해당 메커니즘에 의해 트리거되어야합니다. – Murph

+0

하지만 코드 레벨 코드에서 줄 단위로 코드가 실행됩니다. 어떻게하면 그 함수는 db에서 결과를 얻는 지 전에 실행되었을 것입니다. ru는 메시지 상자를 표시하도록 제안합니다. "잠시 기다려주십시오. 요청은 여전히 ​​있습니다. 프로세스에서 "다음 레코드가 삽입되었거나 않은 경우 db에서 다시 확인하지만 여전히 삽입되지 않은 경우 어떻게됩니까? – kurozakura

+0

그런 식으로 - 사용자가 수동으로 새로 고침 버튼 (새로 고침 버튼 등으로)을 새로 고치거나 일정한 간격으로 데이터베이스를 확인하고 B가 완료 될 때 업데이트하는 타이머를 UI에 추가 할 수 있습니다. 사용자가 프로그램을 끝내기 전에 닫거나 시나리오에 따라 웹 페이지에서 벗어나면 프로그램이 종료됩니다. –

관련 문제