【问题标题】:Java framework for multiple scheduled jobs用于多个计划作业的 Java 框架
【发布时间】:2013-03-20 09:40:51
【问题描述】:

我想问是否有人可以为后端计划作业建议适当的框架。目前整个后端基于多个计划的作业。所有作业都是用 java 编写并部署在 linux 机器上。这些作业由 cron(使用 crontab)和简单的 bash 脚本作为包装器控制,所以基本上我有几个 jars(它们都是基于 spring 的 uber-jars [带有依赖项]),它们会定期触发。这些 java 模块正在做各种各样的事情,比如处理 csv/xml 文件、从 web 服务获取数据、调用外部 API (HTTP) 以及从 FTP 收集数据。 是否有一个框架让我能够将所有模块放在一个地方并简单地管理它们?我在考虑骆驼(我以前用过),但对我来说必须的是:

  1. 能够在不中断其余模块的情况下部署/取消部署单个模块。
  2. 能够在运行时重新安排作业(cron 表达式)。

Camel 几乎是完美的,因为它具有外部集成(FTP、HTTP、WS)的所有功能,并且还易于集成石英。我不知道是否可以拥有多个模块并在运行时部署/取消部署它们。

也许还有其他一些框架可以满足我的需求。请提出建议。

【问题讨论】:

  • cron 出了什么问题?
  • 没有错。目前整个后端工作正常,但是......但我觉得我可以节省一些时间,例如骆驼拥有所有集成模块。
  • 关于模块部分,您可能想看看 OSGi。

标签: java scheduled-tasks apache-camel


【解决方案1】:

如果打算在 Java/Scala 中执行此操作,请尝试使用 Quartz 它(也)提供了类似 CRON 的语法来调度作业。

我们将我们的“模块”作为 webapps 部署在一个简单的 servlet 容器 (jetty) 上,并使用 Quartz 调度程序在它们上触发操作(也在 webapp 中公开一个简单的 UI)

【讨论】:

    【解决方案2】:

    对于管理模块的加载和卸载,您可能希望查看基于 OSGI 的东西,例如 Apache ServiceMix,它在您描述的方式中似乎特别适合模块管理(我承认我不太了解您的加载和卸载模块的要求)。将 Quartz 添加到 ServiceMix 以安排作业。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-12
      • 1970-01-01
      • 2022-01-01
      • 2017-01-20
      相关资源
      最近更新 更多