正しい方向に少し押す必要があります。ここに私の問題があります: FTP サーバー上の txt ファイルにアドレスが保存されているクライアントに電子メール メッセージを送信する、非常に信頼性の高いサービスを作成する必要があります。1 つの txt ファイルには、無制限の数のエントリを含めることができます。ほとんどの場合、ファイルには約 300,000 のエントリが含まれています。
Service は、次の 2 つの単純なメソッドだけでインターフェイスを公開します。
TaskHandle sendEmails(String ftpFilePath);
ProcessStatus checkProcessStatus(TaskHandle taskHandle);
メソッド sendEmails() は、ProcessStatus を要求できる TaskHandle を返します。
このようなサービスを信頼できるものにするためには、クラスタリングが必要です。1 つの txt ファイルの処理には時間がかかる場合があります。クラスタ内の 1 つのノードを再起動しても、電子メールの送信には影響しません。
JBoss AS 4.2.0 を使用します。これには、特定の時間にサービスの 1 つのインスタンスが確実に実行されるようにする、優れた HASingletonController が付属しています。
ただし、フェイルオーバーが発生すると、2 番目のサービスは最初のサービスが停止した場所から作業を続行する必要があります。
一部の電子メールを 2 回送信する可能性を残さないように、クラスター内のノード間で状態を共有するにはどうすればよいですか?