0

我有一个 servlet,它在客户端请求时将多封邮件发送到不同的地址。

由于发送邮件需要很长时间,因此客户端必须等待才能收到响应。我想异步处理邮件的发送,以更快地将响应发送回客户端。

此外,邮件的发送可以延迟到几分钟,并且不必是实时的。我不想在数据库中保存任何信息,只想在应用程序中处理。我想到的解决方案如下:

当客户端请求此 servlet 时,servlet 会将邮件列表和内容作为属性添加到 ServletContext 中并将响应发送回客户端 启动时加载一个帮助 servlet 并生成一个 timertask 线程,该线程在每次(例如) 10 分钟,读取 servletcontext 属性,发送邮件并删除属性。

请建议这是否是一个好的解决方案。如果有的话,也提出一个更好的。

4

1 回答 1

0

您的解决方案听起来很合理,只是每次收到请求时我都会启动一个邮件线程。没有必要仅仅因为这个原因而有一个单独的“帮助”servlet。

或者更好的是,拥有一个线程池并为每个请求提交一个Callable

在线程/线程池选项上要格外小心:确保它们在(优雅的)Tomcat 关闭时完成发送所有电子邮件。Tomcat 关闭应仅在发送所有电子邮件后完成。

于 2011-12-28T22:43:12.170 回答