建议设计报表调度程序服务

时间:2013-04-14 02:33:10

标签: java spring hibernate spring-integration

我正在用Java设计报表调度程序服务。任务是在此特定时间查找数据库并查找是否有任何报告要执行。 如果是,我们需要触发报告生成任务。 报告可以安排在特定时间(例如:周一@ 18:00 EDT)或每日(每周工作日美国东部时间09:00)或每月(美国东部夏令时21:00)。

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

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

如果有更好的实施方法,需要有关工具或设计建议的帮助吗?

1 个答案:

答案 0 :(得分: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"/>