【问题标题】:Spring Batch: Use of ExcecutionContext to pass step attributesSpring Batch:使用 ExecutionContext 传递步骤属性
【发布时间】:2018-01-08 15:42:50
【问题描述】:

我有一些 Spring 批处理作业,其中的步骤数需要不同的时间来运行。我现在需要为每个步骤定义阈值,以检查其运行是否超过阈值时间。

我正在考虑以某种方式将此值传递给 StepExecution 类的 ExecutionContext。

我浏览了https://docs.spring.io/spring-batch/trunk/reference/html/configureJob.html 和其他文档以了解值是如何传递 ExecutionContext 的,但找不到任何东西。

谁能帮我理解 StepExecution 的 ExecutionContext 是如何初始化的,我可以在每个步骤定义中传递一些自定义参数吗?

【问题讨论】:

  • 您的意思是要为流程中的每个步骤设置阈值吗?那么如果时间超过阈值,你希望框架做什么?
  • 查找超时终止策略;它适用于块
  • @pvpkiran 是的,没错。我想将此数据视为步骤的 META 数据,并且我们有 UI 控制台使用 spring-batch-admin REST API 来监视步骤是否超过阈值,以便我们可以针对阈值生成步骤级别执行时间的报告。
  • 为什么不直接配置为 Spring 属性?
  • @MichaelMinella:你能举例说明如何在每个步骤中做到这一点。

标签: java spring spring-batch spring-batch-admin spring-framework-beans


【解决方案1】:

我们的项目中也有类似的情况,我们确实通过 jobParameters 逐步传递值,并像这样修改或添加作业参数中的值

chunkContext.getStepContext().getStepExecution().getJobParameters().getParameters().put("THRESHOLD", "VALUE")

在 StepListener 中,我们确实检查或检索了该值并进行了相应的处理。

【讨论】:

  • 感谢您的回答。但是我们对每个步骤都有不同的阈值的具体要求。我想了解有什么方法可以在步骤级别传递参数而不是在 java 代码中硬编码?
  • 我不明白你的要求.. sn-p 实际上没有硬编码.. 它只是在步骤内的 jobParameters 中添加一个新的键/值..
猜你喜欢
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
  • 2022-01-25
  • 2019-05-24
  • 2018-09-27
  • 2015-04-09
相关资源
最近更新 更多