0

我正在用 Java 设计一个报告计划程序服务。任务是在数据库中查找并查找是否有任何报告应在此特定时间执行。如果是,我们需要触发报告生成任务。报告可以安排在特定时间(例如:星期一 @ 18:00 EDT)或每日(每周日 @ 09:00 EDT)或每月(每月最后一天 @ 21:00 EDT)。

我们目前使用的技术栈: - Java 6 - Spring 3.1.3 - Spring Integration 2.2 - Hibernate 4

当前设计计划: - 创建计时器事件,每 5 秒在数据库中填充一条带有时间戳的消息 - 将所有时间表转换为 UTC 时区后将其加载到内存中 - Spring 通道读取此消息,该消息每 5 秒到达并调用服务查看如果任何计划将要执行,则向上 - 如果报告到期调用触发报告的服务

需要有关工具或设计建议的帮助,如果它们是更好的实现方式吗?

4

1 回答 1

0

一种选择是几乎完全在 Spring Integration 中执行此操作。

使用 JPA 入站通道适配器,可以将轮询器配置为定期轮询数据库并创建消息,从而允许您转换和启动您的工作。所有这些都可以在 Spring Integration 中完成。

<int-jpa:inbound-channel-adapter
    channel="trigger.channel"
    entity-manager="entityManagerFactory"
    jpa-query="select t from ReportTrigger where ...">
    <int:poller cron="30 * 9-17 * * MON-FRI"/>
</int-jpa:inbound-channel-adapter>

<int:channel id="trigger.channel"/>
于 2013-04-14T11:56:29.490 回答