在 Spring 批次中自定义作业 ID

Customize Job Id in Spring Batch

在 spring 批处理中,生成作业 ID internally.Is 有什么方法可以在作业 ID 中设置我自己的值? 我们的客户将发送一个订单 ID 作为 request.So 的一部分,我希望该订单 ID 被 jobLauncher 设置为作业 ID。

有什么方法可以实现吗?

我们可以设置在org.springframework.batch.core.JobParametersBuilder

In spring batch,the job id gets generated internally.Is there any way I can have my own value set in job id?

您可以获得的最接近此 a 的是作业实例 ID 的自定义 DataFieldMaxValueIncrementer,您可以通过 JobRepositoryFactoryBean#setIncrementerFactory 提供它。这允许您自定义 ID 序列的生成方式。

但是,此 API 用于递增序列中的值,因此我不确定您是否可以使用它来分配随机 ID。否则,这将是 API 的错误用法。也就是说,我会将订单 ID 作为作业参数传递(如 Simon Martinelli 在评论中所推荐的那样)并使用 JobExplorer 查找作业 ID 以查找订单 ID 和相应作业 ID 之间的关联。