java - 如何在计划作业之间共享数据

标签 java windows quartz-scheduler

我正在编写一个调度程序,它可以获取 XML 数据并将其插入 MySQL DB - 并不简单。但我试图找到的问题或逻辑就在这里。 注意:我想在 Windows 环境中执行此操作,将来可能会为其他平台进行配置。

  1. 调度程序应每 5 分钟运行一次。
  2. 此脚本应获取有关从 XML 解析和收集数据字段的条件/配置,并且这些条件可从 MySQL 表中获取。
  3. 此表还定义了一个延迟,在此脚本应检查 XML 字段和延迟中的差异。
  4. 此脚本执行两项操作,每 5 分钟运行一个脚本来收集 XML 并检查表 (MySQL) 中每个所述延迟的差异。
  5. 然后,该脚本读取 XML 数据字段并对其进行解析,然后仅收集从上述 MySQL 表中定义的数据字段。
  6. 只有当状态发生变化时,收集的数据才会插入MySQL DB,并且该状态是从MySQL表中定义的。

反馈/建议:

  1. 由于延迟,我不确定应该如何将配置存储在将在每个计划之间共享的脚本中。
  2. 是否可以在代码中使用static变量来存储这些数据?哪些将由不同的工作共享?或者不同的时间表?
  3. 基本上,我应该如何实现这个?就性能而言,这是一种更好的方法。

感谢您的宝贵时间。

更新:

其中一个建议是使用 Java 代码作为 Windows 服务(?)我们可以在不同的作业之间共享一些通用数据吗? - 这有道理吗?

引用: Java Service Wrapper

最佳答案

并发就是答案,尝试创建线程池或执行器服务,并停止某些线程 5 分钟,如果很少有线程使用相同的资源,您甚至可以使用同步。 请记住,并不总是使用的线程越多,完成工作的速度就越快。 3 个线程 - 2 分钟 5线程-6分钟

*阅读有关线程的教程

*创建几个简单线程并等待 5 分钟

*阅读一些有关线程池/同步和共享资源的教程(脚本部分) *测试找到最佳方法

关于java - 如何在计划作业之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7722699/

相关文章:

java - RxJava 订阅时类型不匹配

java - 从 MongoDB 读取数据

java - 使用 printf 在 java 中格式化输出

mysql - Node Express JS - 每次更新代码都需要重新启动服务器应用程序

java - Actions.dragAndDropBy 未按预期工作

python - 删除 Tkinter 中的最小化/最大化按钮

windows - 如何使用批处理文件连接到 Oracle DB

java - 如何避免 Quartz Scheduler 中的多个线程触发同一个作业?

java - 如何设置 quartz 来触发工作并安排一周中的每一天?

java - 无法让 Quartz 任务在 Spring web mvc 中运行