如何从外部应用程序触发Spring云任务?

时间:2018-08-08 07:25:43

标签: spring-cloud-task

我创建了一个Spring cloud任务,它将根据需求执行一些特定的任务。我想从另一个Spring Boot应用程序中调用此任务。请让我知道有什么方法可以从外部应用程序调用以下任务。

@SpringBootApplication
@EnableTask
public class FileGenerationTaskApplication {
    @Autowired
    private DataSource dataSource;

    public class FileGeneratorTaskConfigurer extends DefaultTaskConfigurer {
        public FileGeneratorTaskConfigurer(DataSource dataSource){
            super(dataSource);
        }
    }

    @Bean()
    public FileGeneratorTaskConfigurer getTaskConfigurer() {
        return new FileGeneratorTaskConfigurer(dataSource);
    }

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


    @Component
    public static class FileGeneratorTaskRunner implements  ApplicationRunner {

        @Autowired
        private FulfillmentFileGenerationService service;


        public void run(ApplicationArguments args) throws Exception {
            System.out.println("FileGeneratorTaskRunner from Spring Cloud Task!");
            service.fulFillmentFileGenerationTask();
        }
    }

}

我们可以创建一个REST API来调用spring cloud任务吗?

1 个答案:

答案 0 :(得分:0)

最好在Spring Cloud Dataflow上注册Task。 注册任务后,可以进行REST调用以触发任务。签出example

您也可以使用Spring Cloud Dataflow Rest Client

DataFlowOperations dataFlowOperations = new DataFlowTemplate(URI.create(springDataFlowUri));
TaskOperations operations = dataFlowOperations.taskOperations();

然后,您可以开始启动以前使用API​​ Rest所获得的任务。

如果您不想使用Spring Cloud DataFlow,请记住创建任务时,它本身就是一个Spring Boot应用程序,因此您可以expose end points来触发Task。