2010-03-15 20 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接收消息并发送电子邮件。另一种选择是直接与数据库同步,让读取过程在数据库中插入地址和状态,并让您的服务读取数据库中的地址发送电子邮件并更新状态...

相关问题