Пакет Spring с задачей Spring Cloud, Open Feign и двумя источниками данных вызывает зависимости cycli c - PullRequest
0 голосов
/ 16 июня 2020

У меня есть пакетный проект весенней загрузки, который должен работать в Spring Cloud Data Flow, следовательно, задействован spring-cloud-task. Он использует два источника данных (один для пакетных таблиц Spring, другой для таблиц данных), поэтому мне нужно настроить TaskConfigurer для правильного источника данных. В качестве клиента для отдыха использую Feign. Эта комбинация вызывает зависимость cycli c.

┌─────┐
|  dummyService defined in file [/tmp/archetype-test/archetype-test/target/classes/com/batchjobs/adapter/dummyservice/DummyService.class]
↑     ↓
|  com.batchjobs.adapter.dummyservice.DummyServiceClient
↑     ↓
|  org.springframework.cloud.task.configuration.TaskLifecycleConfiguration
↑     ↓
|  org.springframework.cloud.task.configuration.SimpleTaskAutoConfiguration
↑     ↓
|  jobConfiguration (field private com.batchjobs.steps.pingdummyservice.DummyServiceItemWriter com.batchjobs.config.JobConfiguration.dummyServiceItemWriter)
↑     ↓
|  dummyServiceItemWriter defined in file [/tmp/archetype-test/archetype-test/target/classes/com/batchjobs/steps/pingdummyservice/DummyServiceItemWriter.class]
└─────┘

с

@Slf4j
@Component
public class DummyService {

    private final DummyServiceClient dummyServiceClient;

    @Autowired
    public DummyService(DummyServiceClient dummyServiceClient) {
        this.dummyServiceClient = dummyServiceClient;
    }

    public void ping(String string) {
        String result = dummyServiceClient.ping(string);
        log.info(result);
    }
}
@FeignClient(value = "dummy-service", url = "${dummyservice.url}")
public interface DummyServiceClient {

    @PostMapping(value = "/ping", consumes = "application/json", produces = {"application/json", "application/problem+json"})
    @ResponseBody
    String ping(String ping);
}
@Configuration
@EnableBatchProcessing
@SuppressWarnings("squid:S3305")
public class JobConfiguration {

    @Bean
    BatchConfigurer batchConfigurer(DataSource dataSource) {
        return new DefaultBatchConfigurer(dataSource);
    }

    @Bean
    TaskConfigurer taskConfigurer(DataSource dataSource) {
        return new DefaultTaskConfigurer(dataSource);
    }
}
@Component
public class DummyServiceItemWriter implements ItemWriter<Some> {

    private final DummyService dummyService;

    @Autowired
    public DummyServiceItemWriter(DummyService dummyService) {
        this.dummyService = dummyService;
    }

    @Override
    public void write(List<? extends Some> somes) {
        somes.forEach(some -> dummyService.ping("ping"));
    }
}
@SpringBootApplication
@EnableTask
@EnableRetry
public class BatchJobApplication {

    public static void main(final String[] args) {
        SpringApplication.run(BatchJobApplication.class, args);
    }
}

У вас есть идеи, как решить эту проблему? Почему для Feign (в DummyServiceClient) требуется TaskLifecycleConfiguration?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...