1

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

服务只用两个简单的方法公开接口:

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

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

对于这样的服务来说,可靠的集群是必要的。处理单个 txt 文件可能需要很长时间。重启集群中的一个节点应该不会影响发送电子邮件。

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

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

我如何才能在集群中的节点之间共享状态,这样就不可能发送两次电子邮件?

4

1 回答 1

3

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

于 2010-03-15T11:40:10.653 回答