当前位置: 首页 > 知识库问答 >
问题:

Spring批处理,在哪里/如何保存有关作业的元数据

王磊
2023-03-14

我如何设置任何外部数据库(mysql、postgres,目前我不关心哪一个)以用于元数据?

目前,我有Spring批次将作业的结果写入MongoDB,这很好,但我没有跟踪作业状态,所以作业每次都从一开始就运行,即使中途中断。

有很多例子可以避免这样做,但似乎找不到一个明确的答案,我需要配置什么来将元数据发送到真实的地方,而不是内存中。

我尝试添加属性文件,但没有效果

#    for Postgres:
batch.jdbc.driver=org.postgresql.Driver
batch.jdbc.url=jdbc:postgresql://localhost/postgres
batch.jdbc.user=postgres
batch.jdbc.password=mysecretpassword
batch.database.incrementer.class=org.springframework.jdbc.support.incrementer.PostgreSQLSequenceMaxValueIncrementer
batch.schema.script=classpath:/org/springframework/batch/core/schema-postgresql.sql
batch.drop.script=classpath:/org/springframework/batch/core/schema-drop-postgresql.sql
batch.jdbc.testWhileIdle=false
batch.jdbc.validationQuery=

共有1个答案

孟祯
2023-03-14

有很多例子说明了如何避免这样做,但似乎找不到一个明确的答案,我需要配置什么来将元数据发送到真实的地方,而不是内存中。

您需要在批处理应用程序上下文中配置DataSource类型的bean(或扩展DefaultBatchConfigrer并设置要用于存储元数据的数据源)。

这里有很多样品:https://github.com/spring-projects/spring-batch/tree/master/spring-batch-samples

您可以在此处找到数据源配置:https://github.com/spring-projects/spring-batch/blob/master/spring-batch-samples/src/main/resources/data-source-context.xml

 类似资料:
  • 我有以下工作要处理在一定的时间间隔或特别的基础上。 作业中的步骤如下: 我也想要用户界面,在那里我可以触发一个特别的基础上的工作,而且我应该能够提供参数从用户界面。 我想用Spring batch来完成这个任务,但它更多的是用于读->处理->写之类的工作。这里,在第一步中,我正在生成由第二步读取的数据。我不确定我是否还可以使用Spring batch来实现这个,或者有更好的方法来实现这个。

  • 我已经开始探索Spring Batch,并遇到了一些基本问题。

  • 在这个应用程序中,我使用了Spring Data JPA。它是另一个使用Spring Batch并创建这些表的应用程序。换句话说,我只想运行一个连接查询,并将它直接映射到我的定制对象,只需要一些必要的字段。在可能的范围内,我希望避免为这两个表制作分开的模型。但我不知道这里最好的方法。

  • 问题内容: 运行main方法时,将执行作业。这样我无法弄清楚如何控制作业的执行。例如,您如何安排作业,访问作业执行或设置作业参数的方式。 我试图注册自己的JobLauncher 但是当我尝试在主要方法中使用它时: 当加载上下文时,该作业再次执行,而当我尝试手动运行它时,我得到了。有没有办法防止自动作业执行? 问题答案: 通过设置可以防止作业执行 在application.properties中。或

  • 我按照这个示例使用Boot进行Spring批处理。 运行main方法时,作业将执行。这样我就不知道如何控制作业的执行了。例如如何排定作业、访问作业执行或设置作业参数。 我尝试注册自己的JobLauncher 但当我尝试在主法中使用时: 当加载上下文时,再次执行作业,并且尝试手动运行作业时得到。有没有办法防止自动执行作业?

  • 我有一个Spring Boot应用程序,通过从kafka收集数据,我正在做很多插入。我希望使用 saveAll 批处理插入来提高性能。但是很少有数据会被认为是重复的,每当在我的代码中捕获DataIntegrityViolationException时,我都会更新它们。使用批处理插入,有没有办法为每个重复的数据捕获此异常,并使用 do 更新代码进行处理?