我们有一个 Web 应用程序,它通过在 Jersey/Tomcat/Apache/PostgreSQL 上运行的 RESTful Web 服务接收传入数据。除了这个 Web 服务应用程序之外,我们还有许多需要执行的重复任务和计划任务。例如,以不同的时间间隔清除不同类型的数据,按不同的时间表从外部系统中提取数据,以及在指定的日期和时间生成报告。
所以,在阅读了 Quartz Scheduler 之后,我发现它看起来很合适。
我的问题是:我应该将我的基于 Quartz 的调度应用程序设计为在 Tomcat 中运行(通过 QuartzInitializerListener),还是将其构建到一个独立的应用程序中作为 linux 守护程序运行(例如,通过 Apache Commons Daemon 或 Tanuk Java Service Wrapper)。
一方面,我觉得使用 Tomcat 来托管一个不适合接收 http 调用的应用程序是违反直觉的。另一方面,我之前没有使用过 Apache Commons Daemon 或 Java Service Wrapper,所以在 Tomcat 中运行可能是阻力最小的路径。
我应该注意这两种方法是否有任何显着的好处或危险?我们的核心模块已经处理了数据访问、日志记录等,所以我认为这些服务并不是一个重要因素。
我们的调度将是数据驱动的,因此我们基于 Quartz 的调度器将从 PostgreSQL 中读取相关数据。但是,如果我们在 Tomcat 中运行调度应用程序,是否可以/合理地通过对 Tomcat 的 http 调用向我们的应用程序发送消息?最后,由于我们的工作将由我们现有的应用程序数据驱动,我认为不需要 Quartz JDBCJobStore。