2010-03-15 22 views
1

我需要向正確的方向稍微推動一下。這是我的問題:我必須創建一個超可靠的服務,將電子郵件發送到其地址存儲在FTP服務器上的txt文件中的客戶端。單個txt文件可能包含無限數量的條目。大多數情況下,該文件包含約300,000個條目。從txt文件發送郵件的JBoss集羣服務

服務公開,只有兩個簡單的方法接口:

TaskHandle sendEmails(String ftpFilePath); 
ProcessStatus checkProcessStatus(TaskHandle taskHandle); 

方法sendEmails()返回TaskHandle,使我們可以要求ProcessStatus。

對於這樣的服務是可靠的羣集是必要的。 處理單個txt文件可能需要很長時間。重新啓動羣集中的一個節點應該不會影響發送電子郵件。

我們使用JBoss AS 4.2.0,它帶有一個很好的HASingletonController,確保在給定的時間運行一個服務實例。

但是一旦發生故障切換,第二個服務應該從第一個服務停止的地方繼續工作。

如何在集羣中的節點之間共享狀態,以避免發送兩次電子郵件的可能性?

回答

3

您可以使用消息傳遞將文件讀取與郵件發送分離。讓一個進程讀取文件併發送包含1到N個電子郵件地址的JMS消息,並讓MDB接收消息併發送電子郵件。另一種選擇是直接與數據庫同步,讓讀取過程在數據庫中插入地址和狀態,並讓您的服務讀取數據庫中的地址發送電子郵件並更新狀態...

相關問題