Search code examples
jax-rshelidon

How to schedule job by helidon MP?


Im Try to create schedule job sample, buy task dont execute.

what's wrong?

@ApplicationScoped
public class CustomApplication extends Application {
    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> classes = new HashSet<Class<?>>();
        classes.add(FileService.class);
        return classes;
    }

}
public class FileService {

    public void schedulerFeature() throws InterruptedException {
        Scheduling.fixedRateBuilder()
                .delay(4)
                .initialDelay(2)
                .timeUnit(TimeUnit.SECONDS)
                .task(inv -> {
                    System.out.println("Running in:" + Thread.currentThread().getName());
                    System.out.println("Every 4 seconds an action, with an initial delay");
                })
                .build();

        Thread.sleep(12000);
    }

}

Im Try to create schedule job sample, buy task dont execute.


Solution

  • I revised my application and i had imported wrong maven lib. To schedule a job It is necessary import microprofile scheduling maven artifact:

    <dependency>
        <groupId>io.helidon.microprofile.scheduling</groupId>
        <artifactId>helidon-microprofile-scheduling</artifactId>
        <version>3.0.2</version>
    </dependency>
    
    import java.util.HashSet;
    import java.util.Set;
    
    @ApplicationScoped
    public class CustomApplication extends Application {
        @Override
        public Set<Class<?>> getClasses() {
            Set<Class<?>> classes = new HashSet<Class<?>>();
            classes.add(FileService.class);
            return classes;
        }
    
    }
    
    import io.helidon.microprofile.scheduling.Scheduled;
    import jakarta.enterprise.context.ApplicationScoped;
    
    
    /**
     * File service.
     */
    
    @ApplicationScoped
    public class FileService {
    
        @Scheduled("0/2 * * * * ? *")
        //@FixedRate(1)
        public void schedulerFeature()  {
            System.out.println("Running");
        }
    
    }