문제

ASP.NET 프로그램이 있으며 많은 이메일을 보내야합니다. 내가 전화 할 때 http : // localhost : 70/sendemails시스템은 분리 된 스레드 (비동기처럼)로 이메일을 하나씩 전송합니다. 이것이 최고의 방법인지 모르겠습니다. 그러나 내가 알고 싶은 것은 : 10000 개의 이메일을 보내야 할 예정입니다. 그리고 링크를 호출 한 다음 브라우저를 닫으면 (세션도 닫히는 것을 의미합니다), 내가 만든 스레드도 종료되면?

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

도움이 되었습니까?

해결책

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

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

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

다른 팁

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

메일 전송에 가장 적합한 방법은 별도의 Windows 서비스를 갖는 것이지만, 그럴 수없는 경우 스레드를 사용하는 것이 실행 가능한 아이디어 일 수 있으므로 응용 프로그램 재활용에서 스레드를 다시 시작하고 어디에서 보내는 곳에서 스레드를 다시 시작하는 메커니즘을 제공 할 수 있습니다. 그것은 남았습니다. 재시작의 문제점은 스레드를 되 찾으려면 페이지에 대한 요청이 필요하다는 것입니다. 예를 들어 예약 된 작업을 사용하여 컨트롤 한 컴퓨터에서이를 수행 할 수 있습니다. Windows 서비스에 비해 작동 할 수 있지만 신뢰할 수는 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top