您現(xiàn)在的位置:首頁(yè) > 綜合 > 特別關(guān)注 > 正文

焦點(diǎn)關(guān)注:Spring Cloud Task 任務(wù)開(kāi)發(fā)-實(shí)現(xiàn)任務(wù)處理邏輯(二)

時(shí)間:2023-04-22 12:45:36    來(lái)源:騰訊云    


(相關(guān)資料圖)

創(chuàng)建任務(wù)配置類(lèi)

接下來(lái),我們需要?jiǎng)?chuàng)建一個(gè)任務(wù)配置類(lèi),用于配置任務(wù)的輸入和輸出。

@Configuration@EnableTaskpublic class StringReverseTaskConfiguration {    @Bean    public TaskConfigurer taskConfigurer() {        return new DefaultTaskConfigurer(dataSource());    }    @Bean    public DataSource dataSource() {        return new EmbeddedDatabaseBuilder()                .setType(EmbeddedDatabaseType.H2)                .addScript("classpath:org/springframework/cloud/task/schema-h2.sql")                .build();    }    @Bean    public CommandLineRunner commandLineRunner(TaskExplorer taskExplorer) {        return args -> {            List taskExecutions = taskExplorer.getTaskExecutions(taskExplorer.getLatestTaskExecution("string-reverse-task").getTaskName());            for (TaskExecution taskExecution : taskExecutions) {                System.out.println("Execution: " + taskExecution.getExecutionId() + " / Task name: " + taskExecution.getTaskName() + " / Start time: " + taskExecution.getStartTime() + " / End time: " + taskExecution.getEndTime() + " / Exit code: " + taskExecution.getExitCode());            }        };    }    @Bean    public Task stringReverseTask() {        return new SimpleTaskBuilder()                .name("string-reverse-task")                .input("Hello World!")                .tasklet(new StringReverseTask())                .build();    }}

在上面的代碼中,我們創(chuàng)建了一個(gè)名為stringReverseTask的任務(wù),使用SimpleTaskBuilder類(lèi)創(chuàng)建任務(wù)對(duì)象。我們通過(guò)name方法來(lái)為任務(wù)命名,通過(guò)input方法設(shè)置任務(wù)的輸入,通過(guò)tasklet方法設(shè)置任務(wù)的執(zhí)行邏輯。這里我們使用了之前實(shí)現(xiàn)的StringReverseTask類(lèi)作為任務(wù)執(zhí)行邏輯。

運(yùn)行任務(wù)

現(xiàn)在,我們已經(jīng)實(shí)現(xiàn)了任務(wù)的輸入、輸出以及任務(wù)處理邏輯,接下來(lái)我們需要運(yùn)行任務(wù)。

我們可以通過(guò)CommandLineRunner類(lèi)運(yùn)行任務(wù),CommandLineRunner接口在Spring Boot應(yīng)用程序啟動(dòng)后執(zhí)行一些預(yù)定義的任務(wù)。我們?cè)谥暗腟tringReverseTaskConfiguration類(lèi)中定義了一個(gè)CommandLineRunner類(lèi),該類(lèi)通過(guò)TaskExplorer類(lèi)查詢(xún)?nèi)蝿?wù)執(zhí)行結(jié)果并將結(jié)果輸出到控制臺(tái)。

現(xiàn)在我們可以運(yùn)行Spring Boot應(yīng)用程序,看到任務(wù)的執(zhí)行結(jié)果:

Received input: Hello World!Output: !dlroW olleHExecution: 1 / Task name: string-reverse-task / Start time: 2022-04-23 17:09:27.149 / End time: 2022-04-23 17:09:27.155 / Exit code: 0

在上面的輸出中,我們可以看到任務(wù)的輸入和輸出,以及任務(wù)的執(zhí)行結(jié)果。此外,我們還可以看到任務(wù)的執(zhí)行時(shí)間和退出碼。

關(guān)鍵詞:

凡本網(wǎng)注明“XXX(非中國(guó)微山網(wǎng))提供”的作品,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和其真實(shí)性負(fù)責(zé)。

特別關(guān)注