从txt文件发送电子邮件的JBoss Clustered Service

时间:2010-03-15 11:14:51

标签: java service jboss cluster-computing failover

我需要向正确的方向努力。这是我的问题:我必须创建一个超可靠的服务,向客户发送电子邮件,其地址存储在FTP服务器上的txt文件中。单个txt文件可能包含无限数量的条目。大多数情况下,该文件包含大约300,000个条目。

服务使用两种简单方法公开界面:

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

方法sendEmails()返回TaskHandle,我们可以通过它请求ProcessStatus。

为了使这种服务成为可靠的集群是必要的。 处理单个txt文件可能需要很长时间。重新启动群集中的一个节点应该对发送电子邮件没有影响。

我们使用JBoss AS 4.2.0,它带有一个很好的HASingletonController,可确保在给定时间运行一个服务实例。

但是一旦发生故障转移,第二个服务应该从第一个服务停止的地方继续工作。

如何以不会发送两次电子邮件的方式在群集中的节点之间共享状态?

1 个答案:

答案 0 :(得分:3)

您可以使用消息传递将文件读取与邮件发送分离。让一个进程读取文件并发送包含1到N个电子邮件地址的JMS消息,并让MDB接收消息并发送电子邮件。另一种选择是直接与数据库同步,让读取过程在数据库中插入地址和状态,让您的服务从数据库中读取地址,发送电子邮件并更新状态......