Spring Batch:枚举枚举并将其传递给读取器

时间:2019-02-23 13:10:16

标签: java spring-boot spring-batch

在我们的域中,我们列出了我们的服务在其中活跃的城市。使用Spring批处理,我想调用带有城市名称参数的REST Web服务。

也许我很想使用库,但是我的意思是这样的:

@Bean
public Step step1(ItemWriter writer) {
    return stepBuilderFactory.get("step1")
            .chunk(InstalledCities.values())
            .reader(reader())
            .processor(processor())
            .writer(writer)
            .build();
@Bean
public ItemReader<BikerCashOutDto> reader(InstalledCities city) {
    theSrevice.call(city);
}

1 个答案:

答案 0 :(得分:0)

如果我的理解正确,您需要遍历一个城市列表,并为每个城市打电话给休息服务。如果正确,请按以下步骤操作:

  • 创建一个逐个返回城市的项目阅读器
  • 创建一个项目处理器,以调用每个城市的其余端点

例如:

@Bean
public ItemReader<City> reader(List<City> cities) {
    return new ListItemReader<>(cities); // or get cities from InstalledCities
}

@Bean
public ItemProcessor<City, City> itemProcessor(TheSrevice theSrevice) {
    return new ItemProcessor<City, City>() {
        @Override
        public City process(City city) throws Exception {
            Result result = theSrevice.call(city);
            // use service result if any or enrich city item
            return city;
        }
    };
}

希望这会有所帮助。