在 Java Web 应用程序中处理重复性后台任务的策略?
Posted
技术标签:
【中文标题】在 Java Web 应用程序中处理重复性后台任务的策略?【英文标题】:Strategies for handling repetitive background tasks in a Java web application? 【发布时间】:2011-11-20 20:41:50 【问题描述】:我正在使用 Java EE 6 技术构建个人 Web 应用程序(容器是应用程序服务器,Jboss AS 7)。我从头开始创作 重复的后台任务,我确定了两种可能的情况:
计划任务(例如,每周日晚上发送大量邮件) 基于网络事件触发任务(例如,通过网络操作运行一些长时间的后台更新)我想要避免的(我不知道是否可行)是让一些后台任务分散在我的平台周围(其中一些使用cron,其他使用TimerTask,db jobs,等等。 .) 变得难以维护。
考虑到前面的两个要求,在 Java Web 应用程序中处理重复性后台任务有哪些不同的方法?
相关:
Scheduled Tasks for Web Applications Scheduled task in a web application?【问题讨论】:
【参考方案1】:使用 EE6,您几乎可以在所有使用 TimerService 和 @Timeout 注释的情况下摆脱 Quartz。
而且你不需要编写一行 XML 来让它工作。
EE Night Hacks book 中有一个很好的例子,也可以作为源代码here。
您可以将 Timeout 方法添加到处理您的触发 Web 事件的 bean。这样,它们可以被维护在一个地方。也可以通过触发事件修改定时器设置。
【讨论】:
【参考方案2】:我还是会看看Quartz。我无法评论 TimerService 用 EE6 作为替代品,因为我没有使用过它,但我发现 Quartz 非常有用。
当我使用它时(现在是几年前),它有一个配置文件,与您为 cron 找到的非常相似。您可以使用它来调用执行计划作业所需的任何方法,然后只需提供一些其他机制来按需调用该方法。
【讨论】:
以上是关于在 Java Web 应用程序中处理重复性后台任务的策略?的主要内容,如果未能解决你的问题,请参考以下文章