spring 在运行时使用多个数据源进行批处理
spring batch with multiple datasources at runtime
我必须在 table 中爬取一些已配置的数据库。其中每条记录指定要从中读取的架构。所以我们必须适当地轮询 table 和 运行 作业。
考虑使用 Spring batch(JdbcPagingItemReader) 从所有配置的 Schema 中读取数据。如果我必须配置它,我该如何使用 Spring Batch ?
我应该为每个数据库读取不同 reader 的多个作业,还是有什么方法可以在 运行 时间为 Spring 批处理发送数据源从中读取数据?
如何为单个 Spring 批处理管理多个数据库。如果没有,是否还有其他关于数据库爬网(或收获)的建议?
如果您只是 运行 查询以获取一些数据然后 运行 其他查询,那么这实际上与 Spring Batch 所做的并不一致。这只是一个标准 JDBC 或 JPA 类型 DAO/Service 设置。您可以使用 Quartz 或 Spring Scheduler 设置一个 CRON 值,以便在您检查 table(s) 时使用。
有 2 个解决方案使用 Spring 批处理:
- 在运行时通过
JobParameters
传递 DataSource
属性(url、用户名、密码....)。这意味着第一次阅读的阅读逻辑(告诉你要阅读什么的那个)必须在工作之外完成
- 有一个包含 2 个步骤的作业,第一个步骤执行 "metadata" 读取并将结果存储在
JobExecutionContext
中,第二个步骤在运行时使用先前存储的值进行实际读取
我必须在 table 中爬取一些已配置的数据库。其中每条记录指定要从中读取的架构。所以我们必须适当地轮询 table 和 运行 作业。
考虑使用 Spring batch(JdbcPagingItemReader) 从所有配置的 Schema 中读取数据。如果我必须配置它,我该如何使用 Spring Batch ?
我应该为每个数据库读取不同 reader 的多个作业,还是有什么方法可以在 运行 时间为 Spring 批处理发送数据源从中读取数据?
如何为单个 Spring 批处理管理多个数据库。如果没有,是否还有其他关于数据库爬网(或收获)的建议?
如果您只是 运行 查询以获取一些数据然后 运行 其他查询,那么这实际上与 Spring Batch 所做的并不一致。这只是一个标准 JDBC 或 JPA 类型 DAO/Service 设置。您可以使用 Quartz 或 Spring Scheduler 设置一个 CRON 值,以便在您检查 table(s) 时使用。
有 2 个解决方案使用 Spring 批处理:
- 在运行时通过
JobParameters
传递DataSource
属性(url、用户名、密码....)。这意味着第一次阅读的阅读逻辑(告诉你要阅读什么的那个)必须在工作之外完成 - 有一个包含 2 个步骤的作业,第一个步骤执行 "metadata" 读取并将结果存储在
JobExecutionContext
中,第二个步骤在运行时使用先前存储的值进行实际读取