2013-03-26 177 views
0

我們的應用程序部署在兩個不同的服務器(Weblogic)中。我們有按計劃發送電子郵件的功能。由於我們的應用程序運行在兩個不同的服務器上,因此用戶將獲得2封電子郵件(每個服務器都有)我們需要將其限制爲1.想法是受歡迎的。多封電子郵件

+0

您可以在兩臺服務器之間使用共享數據庫,您可以跟蹤哪些電子郵件發送 – Apurv 2013-03-26 08:59:06

回答

1

當你還沒有完全,但仍然說明你的系統一般考慮,也有這個問題

  • 標記在中心位置發送電子郵件可能是多種解決方案的數據存儲或內存緩存

    把所有預定的電子郵件在一箇中央存儲庫中的高速緩存或數據存儲和每個電子郵件發件人應用程序標記發送的電子郵件,因爲它發出的電子郵件,因此其他應用程序將檢查所有電子郵件,如果它是不是已經被其他電子郵件發件人組件發送

  • 製作的電子郵件,其中來自獲取數據和發送定期的電子郵件單獨的組件: 一個可能的解決方案可能是電子郵件發送組件應與主應用程序分開,並部署在同一個地方,並與電子郵件數據存儲或交互存儲庫併發送預定的電子郵件。

希望這有助於

+0

感謝您的建議:)我們計劃使用選項1. – NightsWatch 2013-03-27 04:53:41

+0

當您使用jee時,您觸發的作業可能發佈一個消息到一個分佈式隊列,然後消耗,使用一個消息驅動Bean,確保只有一個cluser消耗節點併發布電子郵件 – darrenmc 2013-03-27 17:46:14

+1

@ user2198540如果你發現任何有用的參考答案,可以考慮將其標記爲「正確」 。將有助於讓遊客發現哪一個(對你而言)最有幫助。 (也獎勵具有聲望點的答覆者) – 2014-01-02 18:46:02

0

另一個可能的解決辦法是有一個隊列,你有一個UDQ和MDB消耗的消息,併發送電子郵件。當您處理很多消息時,這個解決方案將在2個託管服務器中的一個出現故障並擴展時運行。

使用DB如果你的負載是高可能會增加的瓶頸。

把一臺服務器上的郵件組件可以在高可用性妥協。

+0

我已經實現了使用服務器名稱的邏輯。我知道將在其中部署應用程序的服務器的名稱,因此使用INetAddress我得到了服務器的名稱,並在數據庫中創建了必須作爲我的電子郵件發送服務器的條目,該條目應作爲監視服務器(此服務器將發送電子郵件一旦第一臺服務器出現故障)。我能夠達到我實際需要的更好的解決方案:)。 – NightsWatch 2014-01-03 11:09:57