【发布时间】:2021-09-01 12:32:17
【问题描述】:
我正在使用带有 SpringBatch 4.3.x 的 SpringBoot 2.4.x 应用程序。我创建了一个简单的工作。 我有从 CSV 文件读取的 FlatFileItemReader。我有 ImportKafkaItemWriter 写入 Kafka 主题。我将这些结合在一起的一步。我正在使用 SimpleJobLauncher,并将 ThreadPoolTaskExecutor 设置为 JobLauncher 的 TasKExecutor。正如我所料,它工作正常。但是我有一个弹性用例,如果我终止应用程序然后重新启动应用程序并触发作业,那么它将继续并完成剩余的作业。不幸的是,它没有发生。我做了进一步调查,发现当我强行关闭应用程序时,SpringBatch 作业存储库键表如下所示:
| job_execution_id | version | job_instance_id | create_time | start_time | end_time | status | exit_code | exit_message | last_updated | job_configuration_location |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 2021-06-16 09:32:43 | 2021-06-16 09:32:43 | STARTED | UNKNOWN | 2021-06-16 09:32:43 |
和
| step_execution_id | version | step_name | job_execution_id | start_time | end_time | status | commit_count | read_count | filter_count | write_count | read_skip_count | write_skip_count | process_skip_count | rollback_count | exit_code | exit_message | last_updated |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 4 | productImportStep | 1 | 2021-06-16 09:32:43 | STARTED | 3 | 6 | 0 | 6 | 0 | 0 | 0 | 0 | EXECUTING | 2021-06-16 09:32:50 |
如果我手动更新这些表,其中我将有效的 end_time 和状态设置为 FAILED,那么我可以重新启动作业并且工作正常。我可以知道我需要做什么,以便 Spring Batch 可以适当地更新那些相关的存储库,并且我可以避免这个手动步骤。如果需要,我可以提供有关代码的更多信息。
【问题讨论】:
标签: spring-boot spring-batch batch-processing