【问题标题】:Strategies for handling repetitive background tasks in a Java web application?在 Java Web 应用程序中处理重复性后台任务的策略?
【发布时间】:2011-11-20 20:41:50
【问题描述】:

我正在使用 Java EE 6 技术构建个人 Web 应用程序(容器是应用程序服务器,Jboss AS 7)。我从头开始创作 重复的后台任务,我确定了两种可能的情况:

  • 计划任务(例如,每周日晚上发送大量邮件)
  • 基于网络事件触发任务(例如,通过网络操作运行一些长时间的后台更新)

我想要避免的(我不知道是否可行)是让一些后台任务分散在我的平台周围(其中一些使用cron,其他使用TimerTask,db jobs,等等。 .) 变得难以维护。

考虑到前面的两个要求,在 Java Web 应用程序中处理重复性后台任务有哪些不同的方法?

相关:

【问题讨论】:

    标签: java web-applications scheduled-tasks


    【解决方案1】:

    使用 EE6,您几乎可以在所有使用 TimerService 和 @Timeout 注释的情况下摆脱 Quartz。

    而且你不需要编写一行 XML 来让它工作。

    EE Night Hacks book 中有一个很好的例子,也可以作为源代码here

    您可以将 Timeout 方法添加到处理您的触发 Web 事件的 bean。这样,它们可以被维护在一个地方。也可以通过触发事件修改定时器设置。

    【讨论】:

      【解决方案2】:

      我还是会看看Quartz。我无法评论 TimerService 用 EE6 作为替代品,因为我没有使用过它,但我发现 Quartz 非常有用。

      当我使用它时(现在是几年前),它有一个配置文件,与您为 cron 找到的非常相似。您可以使用它来调用执行计划作业所需的任何方法,然后只需提供一些其他机制来按需调用该方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-05
        • 2011-02-25
        • 1970-01-01
        • 1970-01-01
        • 2016-08-07
        • 1970-01-01
        相关资源
        最近更新 更多