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

Spring批处理禁用特定作业的Spring Boot自动配置

翟缪文
2023-03-14

我的Spring批处理应用程序有多个作业,但只有一个作业使用一些特定的Spring Boot自动配置特性:

  • 使用spring-data-jpa自动配置为业务事务配置数据库的作业(不是Spring批处理管理)
  • 根本不使用数据库的作业

我把这两个工作打包在同一个单位,因为从商业角度来看是有意义的。两个作业将一起工作,一个作业的输出将是另一个作业的输入。

运行第二个作业时是否可以禁用特定于数据库的自动配置?

共有1个答案

田翰林
2023-03-14

我刚刚尝试使用配置文件,我已经禁用了特定配置文件的自动配置。我对这个解决方案很满意,但我想知道是否还有其他的解决方案

这类似于尝试惰性加载特定于给定作业的bean:如何将类似@lazy的东西应用于Spring批处理?。虽然Spring profiles特性可能会解决您的问题,但我相信它正在解决以单一方式打包所有作业的根本问题。

我会将每个工作单独打包,这个问题(以及许多其他问题)会因设计而消失。这种方法有几个优点:

  • 独立的生命周期管理(错误、功能等)
  • 灵活部署
  • 单独日志
  • 单独配置(与当前问题相同)
  • 更容易/更好的可伸缩性

以及所有让一件事做一件事并把它做好的好理由。

 类似资料:
  • 我正在使用spring批处理读取CSV文件并使用controller触发器将其写入DB。在启动应用程序时,在我从浏览器url中点击之前,我会在启动时看到来自阅读器的打印语句。虽然它不为我的处理器或写入器打印它,它们是在单独的类中,我已经自动连线。是因为读者是豆子吗?

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

  • 是否可以在Spring批处理中动态配置作业? 这是我想做的。我创建了几个不同的,如下所示: FlatFileItemReader 我希望能够在创建批处理作业时动态混合和匹配它们。例如,假设我需要一个有2个步骤的作业。第一步包含一个用于预处理的。第二步将有一个,用于使用我的阅读器/写入器进行基于块的数据处理......类似这样的东西: 在XML中,我可以执行以下操作: 但是我如何像上面一样以编程方式

  • 当编写器抛出异常时,我希望能够将步骤和作业状态设置为失败。在做了一些调试和检查Spring批处理源代码后,我注意到配置了一个,它认为是一个致命的异常,因此将作业状态设置为FAILED,所以我将代码包装在我的编写器中的一个try-get中,将包装在中,现在作业和步骤状态设置为FAILED,这是我想要的。我不确定这是否是正确的方法,因为我在任何地方都找不到它的文档,的留档也没有提到它。所以,问题是:这

  • 我正在使用sping-xd通过批处理作业进行数据摄取。大量作业在4个容器中并行运行。任何地方都在10到40个作业之间。其中大多数在不到一分钟的时间内完成。我使用redis(而不是Rabbitmq)和mysql进行数据存储。Spring-xd-批处理使用不同的mysql-db进行作业/步骤统计,我的应用程序使用不同的mysql-db用于自己的目的。两个mysql-db都在同一台服务器上。所有4个容器

  • 我们目前正在将一个复杂的spring boot batch+admin UI系统迁移到一个spring-cloud-task基础设施中,该基础设施将被管理云数据流。 作为POC的第一阶段,我们必须能够将所有Spring批处理作业打包在同一个部署JAR下,并且能够使用自定义作业参数一个接一个地运行它们,并且支持某种REST API远程执行作业/任务。 我们删除了所有spring-batch管理依赖项