Мне нужно немного подтолкнуть в правильном направлении. Вот моя проблема: мне нужно создать сверхнадежный сервис, который отправляет почтовые сообщения клиентам, чьи адреса хранятся в txt-файле на FTP-сервере. Один текстовый файл может содержать неограниченное количество записей. Чаще всего файл содержит около 300 000 записей.
Сервис предоставляет интерфейс всего двумя простыми способами:
TaskHandle sendEmails(String ftpFilePath);
ProcessStatus checkProcessStatus(TaskHandle taskHandle);
Метод sendEmails () возвращает TaskHandle, с помощью которого мы можем запросить ProcessStatus.
Для такой службы необходима надежная кластеризация.
Обработка одного текстового файла может занять много времени. Перезапуск одного узла в кластере не должен влиять на отправку электронной почты.
Мы используем JBoss AS 4.2.0, который поставляется с красивым HASingletonController, который обеспечивает работу одного экземпляра службы в данный момент времени.
Но как только происходит аварийное переключение, вторая служба должна продолжить работу с того места, где остановилась первая.
Как я могу разделить состояние между узлами в кластере таким образом, чтобы не было возможности отправлять несколько писем дважды?