2010-03-02 71 views
3

我使用外部郵件服務器發送SMTP郵件,該服務器實際上超出了我的控制範圍。從Java發送電子郵件時SMTP服務器掛起時的幫助

最近幾次這個郵件服務器有問題,它導致我的Java(Struts/Spring)應用程序在等待郵件服務器回覆時完全掛起。

我使用Spring org.springframework.mail.javamail.JavaMailSender發送郵件。

當外部郵件服務器出現問題時,它會凍結以下行:mailEngine.send(mailMessage);

我不介意有時候電子郵件不會被髮送,但是我怎樣才能阻止這個凍結我的應用程序,同時等待SMTP服務器的回覆呢?

是否有任何良好的Java電子郵件排隊解決方案?

回答

1

您可以在後臺線程中發送電子郵件。

1

將您的呼叫發送到SMTP服務器。您可以使用ExecutorService(存在各種實現)並放入Runnables以在稍後階段(帶外)執行。這種方法的優點是你不必顯式編寫你的線程模型。

如果您在提交後從Executor收集Future對象,則可以在適當的超時時間內調用get()並在超時後取消(也可能是重新提交/重試)。

相關問題