Spring Cloud Task


2. What is Spring Cloud Task?

Spring Cloud Task is a microservice framework for creating short-lived, one-time tasks in a Spring Cloud environment. Unlike long-running services, tasks start, run, and finish. Typical use cases:

  • Batch jobs
  • Data migration scripts
  • Event-driven tasks triggered by an event or schedule

Key points:

  • Each task is short-lived
  • Can be monitored and tracked via Spring Cloud Data Flow
  • Supports parameterized execution

3. Simple Example: Spring Boot + Spring Cloud Task

We’ll create a simple task that prints a message and exits.

Step 1: Add dependencies

pom.xml:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-task</artifactId>
        <version>2.5.0</version>
    </dependency>
</dependencies>

Spring Cloud Task 2.x is compatible with Spring Boot 2.x. Adjust versions as needed.


Step 2: Create the main application class

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.task.configuration.EnableTask;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
@EnableTask
public class MyTaskApplication {

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

    @Bean
    public CommandLineRunner commandLineRunner() {
        return args -> {
            System.out.println("Hello! Spring Cloud Task is running.");
            if (args.length > 0) {
                System.out.println("Task parameters:");
                for (String arg : args) {
                    System.out.println(arg);
                }
            }
        };
    }
}

Explanation:

  • @EnableTask – Enables Spring Cloud Task functionality.
  • CommandLineRunner – Executes code once the application starts.
  • You can access task parameters via args.

Step 3: Configure application properties

src/main/resources/application.properties:

spring.application.name=my-task
spring.cloud.task.name=my-task

Optional: Add logging level or database if you want task history.


Step 4: Run the task

Use:

mvn spring-boot:run -Dspring-boot.run.arguments="param1 param2"

Output:

Hello! Spring Cloud Task is running.
Task parameters:
param1
param2

After finishing, the task exits automatically.


Optional: Add Task Repository (for tracking)

Spring Cloud Task can persist task executions in a database:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update

This will let you track task execution history in H2 or any other database.


Summary:

  • Spring Boot: Builds your application quickly.
  • Spring Cloud Task: Adds short-lived task functionality.
  • Example: Task prints a message and exits.
  • Optional: Track tasks via database.

Leave a Reply