Sac*_*in 6 java spring multithreading tomcat web-applications
我正在开发一个部署在Tomcat中的Web应用程序.我们在客户端使用Spring,Hibernate,GWT).
此应用程序的一个功能是在创建,更新或删除任何实体时向用户发送警报(电子邮件).(用户可以动态添加警报,因此需要进行一些处理 - 确定应通过电子邮件通知哪些用户).
理想情况下,警报机制应该是异步的,它应该影响CRUD操作的性能.
我想到的第一件事是创建一个线程并拥有一个阻塞队列.线程保持轮询阻塞队列以查看它是否有任何事件.但是在Web应用程序中创建线程是许多容器不鼓励的事情.
有人建议/建议 - 这是正确的做法吗?或者有更好的方法来做同样的事情.
任何指针都将受到高度赞赏.
萨金,提前谢谢
在容器中创建线程的限制实际上只是让没有经验的开发人员在脚下射击自己的建议.没有容器实际上禁止你这样做.使用java.util.concurrent类,创建线程应该不易出错,我不会太担心这个限制.
如果您的要求很简单,那么在ServletContextListener中创建单个线程/ runnable就足够了.创建并启动线程contextInitialized()
并将其关闭contextDestroyed()
..使用ScheduledExecutorService
创建者Executors.newSingleThreadScheduledExecutor()
.传递给Executor的Runnable将从BlockingQueue中读取.
如果您的需求发生变化并且需要更复杂的东西,您可能希望查看JMS/MDB或Quartz等调度程序.
归档时间: |
|
查看次数: |
8876 次 |
最近记录: |