2009-10-05 5 views
1

나는 asp.net 프로그램을 가지고 있으며 많은 이메일을 보내야한다. http://localhost:70/sendemails시스템은 분리 된 스레드 (하나의 비동기)에서 하나씩 이메일을 전송합니다. 이것이 최선의 방법인지 나는 모른다. 하지만 내가 알고 싶은 것은 : 나는 10000 개의 이메일을 보내고, 링크를 호출 한 후 브라우저를 닫을 것입니다 (세션도 닫히게됨을 의미합니다). 그런 다음 내가 만든 스레드도 종료됩니다 ?언제 asp.net의 스레드가 종료됩니까?

많은 이메일을 보내는 가장 좋은 방법은 무엇입니까?

답변

2

ASP.NET 응용 프로그램이 메시지 큐 또는 데이터베이스의 테이블인지 여부에 관계없이 정보를 일부 설명 큐에 씁니다.

그런 다음 큐를 처리하고 전자 메일을 보내려면 별도의 서비스를 실행하십시오. 응답하기 전에 으로 전송 될 때까지 기다릴 필요가 없지만 해당 페이지가 응답 할 때까지 요청이 지속되었음을 확신 할 수 있습니다.

또 다른 대안은 ASP.NET 응용 프로그램 내에서 전자 메일을 보내는 새 스레드를 시작하는 것이지만 응용 프로그램이 넘어 지거나 (또는 ​​재활용 될 경우) 요청이 손실된다는 것을 의미합니다. 지속성 및 내결함성을 별도의 서비스 인 IMO에 넣는 것이 더 쉽습니다.

+0

예 - MSMQ와 같은 것입니다. – RichardOD

0

브라우저가 닫히면 스레드가 종료되지 않습니다. 스레드를 종료 할 수있는 것은 응용 프로그램의 재활용입니다 (메모리가 너무 많이 커지거나 다른 특정 조건이 발생하는 경우).

메일을 보내는 가장 좋은 방법은 별도의 Windows 서비스를 사용하는 것이지만 가능하지 않은 경우 응용 프로그램에서 스레드를 다시 시작하고 다시 시작하는 메커니즘이있는 경우 스레드를 사용하는 것이 효과적 일 수 있습니다 그것이 남겨진 곳에서 보내는 것. 재시작 문제는 스레드에 대한 페이지 요청을 다시해야한다는 것입니다. 예를 들어 예약 된 작업을 사용하여 제어하는 ​​컴퓨터에서이 작업을 수행 할 수 있습니다. Windows 서비스에 비해 작동 할 수는 있지만 신뢰할 수는 없습니다.

관련 문제