Webアプリケーションでプロファイルを更新した後、電子メールを送信してアクティビティログを更新したいとします。メールを送信してアクティビティログを更新するために、スレッドを使用して、プロファイルの更新応答をクライアントに直ちに送り返し、サブシーケンス操作をスレッドで処理できるようにしたいと考えています。実装を提案してください。Spring MVCでのマルチスレッドコンセプトの使用方法
答えて
これを達成する方法はたくさんありますが、Spring MVCアプリケーションはほとんど無関係です。
は、Java 8を使用している場合、あなたは単にあなたがそのプールからのスレッドを与えるためにエグゼキュータのサービス時に呼び出すことができます。
String emailAddress = //get email address...
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.submit(() -> {
emailService.sendNotification(emailAddress);
});
前のJava 8:
final String emailAddress = "";
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
emailService.sendNotification(emailAddress);
}
});
thread.start();
あなたの場合より複雑なアプリケーションを作成すると、メッセージキュー(ActiveMQは良い)を使用する可能性があります。これにより、より多くの非同期タスクを追加する際に、より多くの制御と可視性とスケールが可能になります。同時に多数の登録がある場合、スレッドのアプリケーションサーバーを枯渇させません。
あなたの提案をありがとう。 – abhiagNitk
BlockingQueueを使用して、プロデューサ - コンシューマモデルを実装して、問題を解決できます。既存のプログラムはプロデューサーとして機能し、BlockingQueueにトークンを追加し、Executor(Executors.newFixedThreadpoolから作成されます)は後続のすべての操作を実行できます。 Javadocを参照して、Springコンテキストを(XMLまたは注釈として)作成することができます。
また、あなたは良いアイデアではありません、プロファイルを保存するときのように送信し、電子メールにスレッドを生成し、CompletionSerive
を参照することができます。多すぎるスレッドが発生し、コンテキストの切り替えによって完了が遅れることがあるためです。したがって、提案は固定スレッドプールを使用する。
JMSキューを使用できます。しかし、それは与えられたシナリオにとって過度のもののように見えます。したがって、BlockingQueueを使用することをお勧めします。
ありがとうございます。 – abhiagNitk
- 1. spring mvcでの結果のタイムアウトの使用方法は?
- 2. NhibernateでMultitenantをMVCのSpringで使用する方法
- 3. spring mvcのコレクションタイプレベルでカスタムアノテーションを使用する方法
- 4. Spring MVCで@ResponseBodyを使用する際のエラー処理方法
- 5. Spring MVCのリクエスト方法は
- 6. Spring MVCでのApplicationContextの使用。
- 7. SpringBootでの@Componenscanの使用Spring MVCアプリケーション
- 8. Springブートでのテンプレートエンジンの使用MVC
- 9. Spring MVCでHibernate Validator注釈を使用する方法4
- 10. Spring MVCでBindingResultインターフェイスを使用する方法は?
- 11. @ModelAttributesと@SessionAttributeをSpring MVCで使用する方法
- 12. HikariCPとJdbcTemplateをSpringで使用する方法MVC 4
- 13. Jsonデータを使用したSpring MVCでのサーバーサイド検証の最善の方法
- 14. SpringでのMVCコンセプトの適用方法(非Webアプリケーション)
- 15. spring-mvcを使用してjackrabbitリポジトリをブラウズする方法
- 16. spring mvcを使用してビューを制御する方法は?
- 17. Spring MVC - FactoryBeansを使用
- 18. のSpring FrameworkのMVCベースコントローラ方法
- 19. フォームの使い方:spring mvcの選択
- 20. バリデーションクラスを使用してspring mvcでサーバ側のバリデーションを行う方法
- 21. Spring MVCのコンテキスト外でSpring Validatorを使用する
- 22. ポストリダイレクトの使い方spring mvcを使用しますか?
- 23. spring mvc URLマッピングの設定方法
- 24. Spring MVCアプリケーションとクラウドストレージの接続方法
- 25. Spring MVCでPOSTにリダイレクトする方法
- 26. Spring MVCでUploadifyを使用する
- 27. spring mvcで正しくセッションを使用
- 28. CockroachDBでSpring MVCを使用する
- 29. htmlでSpring MVCを使用する
- 30. Springセキュリティマルチユーザ用Spring MVC Webアプリケーション
プロファイルテーブルにフラグ列を保持します。 cron式を使って別々のcronジョブを書く必要があります。別のロジックをメソッドに記述し、そのメソッドをcron job executeメソッドで呼び出します。このメソッドは、フラグを使用して検索を実行する必要があります。機能が実行される必要があるレコードは何ですか。電子メール(およびアクティビティログ)を送信した後、フラグを更新できます。 – Sanka
必ずしもフラグを追加する必要はありません。さらに、コードの実装について知りたいと思います。 – abhiagNitk
Ok。電子メールサーバーのクラッシュまたはアプリケーションサーバーのシャットダウンプロセスが発生しました。セッションが終了し、このプロセスで未処理のものをキャプチャすることはできません。 – Sanka