Backend-common/spring-workers-manager-agent
Mikhail Yasnov 5384dd3430 Add isDisabled method 2021-12-03 18:45:16 +03:00
..
src Add isDisabled method 2021-12-03 18:45:16 +03:00
README.md Fix README.md 2021-12-03 12:03:24 +03:00
build.gradle.kts Update worker manager code style 2021-11-25 19:28:55 +03:00

README.md

Workers Agent

Framework for clustered scheduling based on Quartz and Spring Data. Stores all data in a database (Postgres by default).

Used as manageable alternative for Spring's @Scheduled.

How to

  1. Add dependency

    implementation project(":spring-workers-manager-agent")
    
  2. Define a job by annotations to be scheduled in any component.

    package ru.touchin
    
    @Component
    class MyJob {
    
      @ScheduledAction
      @InitTrigger(type = "CRON", expression = "0 15 * * * ?")
      fun sayHello(){
        println("Hello, world!")
      }
    
    }
    
  3. Enable job in application.properties

    workers.names=ru.touchin.MyJob
    

    or:

    workers.names=*    
    
  4. Start the application.

Annotations

@ScheduledAction

Registers method as action of some job.

Parameters:

  • name - name of job. Defaults to class full name. Must be unique in application scope.

@Trigger

Declares default trigger for the job. Default triggers are created when launching job first time.

Parameters:

  • name - Optional name for trigger. Defaults to some (maybe random) string. Name must be unique in scope of corresponding job.
  • type - Trigger type. See triggers types. SpEL expressions are supported like in @Scheduled annotation of Spring.
  • expression - The value for trigger. SpEL expressions are supported like in @Scheduled annotation of Spring.

Configuration

Enabling workers

Agent ignores workers by default. To enable worker add its name to worker.names property. Example:

worker.names=com.eample.Job1,\
  com.example.Job2

Patterns for names

workers.names support Glob-like patterns.

  • Asterisk (*) symbol is for "zero or more any symbols" (as .* in regex)
  • Question mark (?) is for "any single symbol" (as . in regex)

TODO

  • External data source, unrelated to application code.