任务,调度,集群,分布式
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
hsweb-task-cluster
hsweb-task-core
hsweb-task-spring-boot-starter
.gitignore
.travis.yml
README.md
pom.xml

README.md

任务模块

Maven Central Build Status codecov License

提供任务配置,调度,监控. 支持单节点,集群,分布式部署.支持多种任务配置方式: 注解, jar包, 脚本(js,groovy)

单点模式

引入依赖

<dependency>
    <groupId>org.hswebframework</groupId>
    <artifactId>hsweb-task-spring-boot-starter</artifactId>
    <version>${hsweb.task.version}</version>
</dependency>
 @SpringBootApplication
 @EnableTaskWorker
 @EnableTaskScheduler
 public class Application{
    
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
         
    //使用注解方式定义一个任务,并指定调度规则
    @Job(id="test.job",name="测试任务")
    @Scheduled(cron="0 0/1 * * * ?") //支持spring的Scheduled注解
    public void myJob(){
        System.out.println("执行任务");
    }
 }

分布式模式

在worker和scheduler都引入依赖

<dependency>
    <groupId>org.hswebframework</groupId>
    <artifactId>hsweb-task-spring-boot-starter</artifactId>
    <version>${hsweb.task.version}</version>
</dependency>
<dependency>
    <groupId>org.hswebframework</groupId>
    <artifactId>hsweb-task-cluster</artifactId>
    <version>${hsweb.task.version}</version>
</dependency>
<!--使用redisson作为redis客户端进行集群管理-->
<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson</artifactId>
    <version>3.8.2</version>
</dependency>

application.yml

hsweb: 
    task:
      cluster: #集群管理配置,默认使用redis进行集群管理
        redis:
          hosts: redis://127.0.0.1:8761
          database: 1
      worker:
       # id: ${spring.application.name}-${HOSTNAME} #默认使用此ID,不同的节点id必须不同.
        name: worker-node-1
        groups: ${spring.application.name} #worker将执行这些分组的任务
        client-group: ${spring.application.name} #worker作为client自动提交任务时,将使用此分组,必须为groups属性的子集

定义worker

@SpringBootApplication
@EnableTaskWorker
public class Application{
   
   public static void main(String[] args) {
       SpringApplication.run(Application.class);
   }
        
   //使用注解方式定义一个任务,并指定调度规则
   @Job(id="test.job",name="测试任务")
   @Scheduled(cron="0 0/1 * * * ?") //支持spring的Scheduled注解
   public void myJob(){
       System.out.println("执行任务");
   }
}

定义scheduler

 @SpringBootApplication
 @EnableTaskScheduler
 public class Application{
     public static void main(String[] args) {
         SpringApplication.run(Application.class);
     }
 }

application.yml

hsweb: 
    task:
      cluster:
        redis:
          address: redis://127.0.0.1:8761
          database: 1
      scheduler:
#        id: ${spring.application.name}-${HOSTNAME} #默认使用此ID