2017-12-11 17 views
1

Case 문을 기반으로 다양한 전자 메일 및 메서드를 처리하는 MSMQ가 있습니다. Cases 중 하나와 일치하지 않는 메시지가 수신되면 오류 이메일을 보내고 올바른 것입니다. 문제는 메시지가 제대로 작동 할 때까지 대기열에 남아 있지만 결코 일치하지 않기 때문에 이메일을 반복적으로 전송합니다. 즉, 즉시 잡아 내지 않으면 수천 번 잠재적으로 보낼 수 있습니다.MSMQ 트랜잭션 커밋, 중단 또는 삭제?

사례를 찾았 으면 거래가 커밋되었지만이 오류 때문에 커밋되어야하나요, 아니면 중단되었거나 폐기되어야합니까?

답변

0

정확하게 이해한다면 실제 처리되었으므로 처리되지 않은 형식을 트랩하도록 코드를 업데이트하고 (기본값 인 경우) 메시지를 커밋합니다. 다른 시스템에서는 메시지를 전자 메일 대신에 데드 레터 큐로 옮길 수 있습니다. 문제의 원인을 해결할 때/처리 할 대기열로 다시 이동할 수 있습니다. 하지만 그 시나리오에서 메시지를 커밋하고 싶을 수도 있습니다.

중단을 사용하지 않으려는 경우 다시 대기열에 넣기 때문에 중단을 사용하지 마십시오.

1

메시지를 받았고 처리했기 때문에 커밋되어야합니다. 메시지가 사례를 따르지 않았기 때문에 여전히 작업을 수행하고 처리되었으므로 트랜잭션을 통해 대기열에서 메시지를 제거해야합니다. .