【黑马头条】day20—xxl-job(三)

简介: 【黑马头条】day20—xxl-job(三)

任务配置

  • 运行模式:

BEAN模式:任务以JobHandler方式维护在执行器端;需要结合 "JobHandler" 属性匹配执行器中任务;

  • JobHandler:运行模式为 "BEAN模式" 时生效,对应执行器中新开发的JobHandler类“@JobHandler”注解自定义的value值;
  • 执行参数:任务执行所需的参数;

 

阻塞处理策略

阻塞处理策略:调度过于密集执行器来不及处理时的处理策略;

  • 单机串行(默认):调度请求进入单机执行器后,调度请求进入FIFO(First Input First Output)队列并以串行方式运行;
  • 丢弃后续调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,本次请求将会被丢弃并标记为失败;
  • 覆盖之前调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,将会终止运行中的调度任务并清空队列,然后运行本地调度任务;

 

路由策略

当执行器集群部署时,提供丰富的路由策略,包括;

  • FIRST(第一个):固定选择第一个机器;
  • LAST(最后一个):固定选择最后一个机器;
  • ROUND(轮询)
  • RANDOM(随机):随机选择在线的机器;
  • CONSISTENT_HASH(一致性HASH):每个任务按照Hash算法固定选择某一台机器,且所有任务均匀散列在不同机器上。
  • LEAST_FREQUENTLY_USED(最不经常使用):使用频率最低的机器优先被选举;
  • LEAST_RECENTLY_USED(最近最久未使用):最久未使用的机器优先被选举;
  • FAILOVER(故障转移):按照顺序依次进行心跳检测,第一个心跳检测成功的机器选定为目标执行器并发起调度;
  • BUSYOVER(忙碌转移):按照顺序依次进行空闲检测,第一个空闲检测成功的机器选定为目标执行器并发起调度;
  • SHARDING_BROADCAST(分片广播):广播触发对应集群中所有机器执行一次任务,同时系统自动传递分片参数;可根据分片参数开发分片任务;

 

2.8 路由策略(轮询)-案例

1.修改任务为轮询

 

2.启动多个微服务

 

修改yml配置文件

server:

 

port: ${port:8881}
xxl:
  job:
    admin:
      addresses: http://192.168.200.130:8888/xxl-job-admin
    executor:
      appname: xxl-job-executor-sample
      port: ${executor.port:9999}

3.启动多个微服务

每个微服务轮询的去执行任务

2.9 路由策略(分片广播)

2.9.1 分片逻辑

执行器集群部署时,任务路由策略选择”分片广播”情况下,一次任务调度将会广播触发对应集群中所有执行器执行一次任务

 

执行器集群部署时,任务路由策略选择”分片广播”情况下,一次任务调度将会广播触发对应集群中所有执行器执行一次任务

 

2.9.2 路由策略(分片广播)-案例

需求:让两个节点同时执行10000个任务,每个节点分别执行5000个任务

①:创建分片执行器

 

②:创建任务,路由策略为分片广播

 

③:分片广播代码

分片参数

index:当前分片序号(从0开始),执行器集群列表中当前执行器的序号;

total:总分片数,执行器集群的总机器数量;

修改yml配置

server:

 

port: ${port:8881}
xxl:
  job:
    admin:
      addresses: http://192.168.200.130:8888/xxl-job-admin
    executor:
      appname: xxl-job-sharding-executor
      port: ${executor.port:9999}

代码

package com.heima.xxljob.job;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
public class HelloJob {
    @Value("${server.port}")
    private String port;
    @XxlJob("demoJobHandler")
    public void helloJob(){
        System.out.println("简单任务执行了。。。。"+port);
    }
    @XxlJob("shardingJobHandler")
    public void shardingJobHandler(){
        //分片的参数
        int shardIndex = XxlJobHelper.getShardIndex();
        int shardTotal = XxlJobHelper.getShardTotal();
        //业务逻辑
        List<Integer> list = getList();
        for (Integer integer : list) {
            if(integer % shardTotal == shardIndex){
                System.out.println("当前第"+shardIndex+"分片执行了,任务项为:"+integer);
            }
        }
    }
    public List<Integer> getList(){
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < 10000; i++) {
            list.add(i);
        }
        return list;
    }
}

④:测试

启动多个微服务测试,一次执行可以执行多个任务

相关文章
|
1月前
|
Java 调度 Maven
【分布式任务调度平台 XXL-JOB 急速入门】从零开始将 XXL-JOB 接入到自己的项目(下)
【分布式任务调度平台 XXL-JOB 急速入门】从零开始将 XXL-JOB 接入到自己的项目(下)
154 0
|
1月前
|
SQL 负载均衡 监控
【分布式任务调度平台 XXL-JOB 急速入门】从零开始将 XXL-JOB 接入到自己的项目(上)
【分布式任务调度平台 XXL-JOB 急速入门】从零开始将 XXL-JOB 接入到自己的项目
137 0
|
10月前
|
消息中间件 Dubbo 应用服务中间件
Apache Dubbo 和 Apache RocketMQ 邀您参与,ASF 亚洲峰会 5 张门票免费送
Apache Dubbo 和 Apache RocketMQ 邀您参与,ASF 亚洲峰会 5 张门票免费送
|
9月前
|
前端开发 Java 测试技术
靠这份SpringBoot实战手册搭建企业级商城项目,斩获京东offer!
为什么会越来越流行SpringBoot? Spring Boot已经成为企业招聘需求的重要部分了。这也使得Spring Boot成为Java开发人员必备的技术栈。无论应届毕业生还是有经验的Java开发人员,Spring Boot技术栈及相关项目经验都已经成为他们简历中的必要元素
57 0
|
11月前
|
SQL 关系型数据库 MySQL
【黑马头条】day20—xxl-job(二)
【黑马头条】day20—xxl-job(二)
133 0
【黑马头条】day20—xxl-job(二)
|
11月前
|
运维 监控 NoSQL
【黑马头条】day20—xxl-job(一)
【黑马头条】day20—xxl-job
193 0
|
达摩院
【2023届秋招启动】阿里巴巴达摩院语音实验室欢迎各位应届同学们投递简历至speech-jobs@list.alibaba-inc.com,期盼你的加入!
【2023届秋招启动】阿里巴巴达摩院语音实验室欢迎各位应届同学们投递简历至speech-jobs@list.alibaba-inc.com,期盼你的加入!
|
消息中间件 JavaScript 小程序
xxl-job惊艳的设计,怎能叫人不爱
xxl-job惊艳的设计,怎能叫人不爱
|
消息中间件 缓存 JavaScript
魔改xxl-job,彻底告别手动配置任务!
魔改xxl-job,彻底告别手动配置任务!
|
域名解析 缓存 负载均衡
原来XXL-JOB可以这么造
简要讲述基于Serverless应用引擎SAE(Serverless App Engine)的XXL-JOB零改造迁移
原来XXL-JOB可以这么造