2011-06-13 63 views
1

請問誰能告訴我如何使用spring作爲臨時郵件存儲?基本上我需要暫時將電子郵件存儲在內存中,如果它無法連接到電子郵件服務器(原因是網絡錯誤)。那麼應用程序應該嘗試重新連接到郵件服務器。一旦它連接它應該在內存中發送電子郵件。如何使用Spring作爲電子郵件存儲

回答

1

這不是一個真正的Spring問題。你要求的是一個郵件發送機制,它可以在發送失敗時對發送進行排隊,並重試。當然,你可以創建一個具有這種功能的bean,並通過Spring進行連接;在某些情況下,它會非常有用。

+0

非常感謝Gareth和Joseph的快速響應。我認爲將消息持久保留到DB或Queue中會非常有用,但是我認爲可能存在這樣的方法,如http:// wheelersoftware .com/articles/spring-javamail.html – pathum83 2011-06-13 06:06:11

+0

只有這篇文章的快速掃描,但除了如何使用API​​發送郵件之外我什麼都看不到。沒有任何關於處理您的用例..可能我'我錯過了什麼 – 2011-06-14 07:25:43

3

Spring對這個用例並沒有真正的解決方案。

有幾個選項:

  1. 獲取本地主機上,從而將轉達給中央實例的SMTP服務器設置。這將刪除您的應用程序和郵件服務器之間的網絡連接,因此希望有可能不會達到非常小的程度。
  2. 將消息存儲在數據庫中,並不理想,就好像存在阻止訪問郵件服務器的網絡問題一樣,這可能很容易成爲影響數據庫訪問的網絡問題。此外,您還必須創建某種重試過程以每x分鐘重新發送一次消息
  3. 將消息發佈到本地持久JMS隊列,然後讓消息驅動bean(或彈簧消息傳遞容器)移除消息並將其發佈到電子郵件服務器

在我的個人體驗選項中,無論如何讓我足夠接近我需要的服務水平,但是您必須評估自己的需求。

我已經看到選項3在生產系統中與遠程JMS代理嚴重實施。最重要的特性是JMS Broker是本地的,最好在進程中,這樣網絡軟件就沒有機會影響連接。

相關問題