簡體   English   中英

將每周的電子郵件傳遞/新聞稿與Spring Framework集成

[英]Integrating weekly e-mail delivery/newsletter with Spring Framework

對於基於Spring的Web應用程序,現在我需要每周向應用程序的用戶發送一封電子郵件。

有什么優雅的解決方案可以滿足此要求?

到目前為止,我提出了以下可能的解決方案:

  • 我計划每周運行一次專用的 cron作業,該作業獨立於Web應用程序JVM進程並且在Web應用程序Servlet容器之外運行。
    此過程負責發送每周的電子郵件。 為了完成個性化電子郵件的發送,它會重用我已經為Web應用程序開發的域類(例如,我的User類)。 這個專用進程同時訪問我的應用程序的MySQL數據庫到正在運行的Spring Web MVC servlet嗎?
  • 我的Spring Web MVC框架的servlet的內部或我的servlet容器 的計划機制。
    在此設置中,電子郵件發送與我的Web服務Spring Web MVC servlet在同一JVM和同一servlet容器內進行。 也許此設置具有(不相關的)優點,例如與托管在同一環境中的servlet的“數據庫連接池共享”和“事務共享”“類共享”。
  • 對於上述任何設想的設置,請使用或不使用Spring Batch
    我現在對Spring Batch尚無經驗,無法判斷Spring Batch是否適合我的需求。

也許還有其他解決方案?

我對可以提供見解和指導做出明智決策的答案特別感興趣。

對於此特定問題,與通過我自己的基礎結構還是通過第三方電子郵件SaaS服務發送電子郵件無關。

根據您的描述,用於生成新聞通訊的代碼必須與您的主應用程序共享公共代碼庫。 因此,自然的解決方案是與您的主應用程序一起開發此代碼。 公開情況是如何觸發此代碼的:

  1. 來自CRON。 您從CRON啟動腳本,該腳本將以某種方式觸發應用程序中的功能。 這可能是在特定端口上偵聽的過程,或者對於Web應用程序來說很自然的是,一個會觸發新聞通訊的專用URL。 只要確保URL不能從外部運行,只能從localhost運行(例如,檢查呼叫者IP)。 但是,您必須處理以下情況:當CRON啟動腳本時,您的應用程序已關閉(例如,重新啟動)。
  2. 從應用程序內部。 例如,使用Quartz。 缺點是您需要包括新的庫,為Quartz創建數據庫表。 加號-Quartz將處理在應用程序關閉時計划任務的情況,因為它存儲了有關在DB中啟動的內容的信息。

我們總是使用cron將JMS消息發送到隊列,並有一個專用進程來使用這些消息。 您可以將電子郵件內容添加到郵件中,也可以僅將郵件用作觸發器。 這種方法的好處是,您可以從任何地方觸發JMS消息,並具有多個處理程序,這些處理程序有很多不同的電子郵件場景。 唯一的缺點是,如果您還沒有JMS代理,則安裝它。

我正在構建一個基於Spring-MVC的Web應用程序,該應用程序需要每周向一小群人發送新聞通訊。 我正在使用Spring的內置調度機制。 http://static.springsource.org/spring/docs/3.0.x/reference/scheduling.html

是的,在此設置中,電子郵件發送是在同一JVM和同一servlet容器內進行的,實現該解決方案非常容易且方便。 我正在觀察此機制的穩定性和可靠性,現在無法對其進行更多反饋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM