xxljob 1.7.2升级至 2.4.0版本之踩坑记

项目场景:

由于项目安全审查要求 xxljob 版本升级。

问题描述

一、升级后执行器调用调度中心的注册接口调不通

看了日志报错信息是调度中心接收的 data 是空的。data 在接口上是使用的 String 类型而且加了@RequstBody 注解,但是这样是无法接收 application/json 类型的。

1、执行器中复制XxlJobRemotingUtil类(包路径和源代码一致),修改其中的 postBody方法中HttpURLConnection 的Content-Type : connection.setRequestProperty(“Content-Type”, “application/x-www-form-urlencoded;charset=UTF-8”);
请求的requestBody最好编码下不然接受时有可能解析出错。
如图:在这里插入图片描述
这里插入图片描述](https://img-blog.csdnimg.cn/74c7b18e108848ddad73d3c3f3f21f5e.png)

2、调度中心data 需要 decode:
data = URLDecoder.decode(data, Charset.forName(“UTF-8”));
如图:
在这里插入图片描述

二、调用接口需要登录

deafault_token 设置为空,PermissionInterceptor.java中needLogin改为 false

三、提供的JacksonUtil.java转换 json 时有问题,最好不用此类

四、1.7.2的表完全弃用了,2.4.0 版本的表精简了很多,字段也少了一些,配置上也有一些字段名的改变

新增的配置 :xxl.job.executor.logretentiondays=30

五、sql 表语句是 mysql 的 pgsql无法执行,整理了下:

CREATE TABLE xxl_job_info (
  id serial NOT NULL,
  job_group int4 NOT NULL,
  job_desc varchar(255) NOT NULL,
  add_time timestamp(6) NULL DEFAULT NULL::timestamp without time zone,
  update_time timestamp(6) NULL DEFAULT NULL::timestamp without time zone,
  author varchar(64) DEFAULT NULL,
  alarm_email varchar(255) DEFAULT NULL,
  schedule_type varchar(50) NOT NULL,
  schedule_conf varchar(128) DEFAULT NULL,
  misfire_strategy varchar(50) NOT NULL DEFAULT 'DO_NOTHING',
  executor_route_strategy varchar(50) DEFAULT NULL,
  executor_handler varchar(255) DEFAULT NULL,
  executor_param varchar(512) DEFAULT NULL,
  executor_block_strategy varchar(50) DEFAULT NULL,
  executor_timeout int4 NOT NULL DEFAULT '0',
  executor_fail_retry_count int4 NOT NULL DEFAULT '0',
  glue_type varchar(50) NOT NULL,
  glue_source text,
  glue_remark varchar(128) DEFAULT NULL,
  glue_updatetime timestamp(6) NULL DEFAULT NULL::timestamp without time zone,
  child_jobid varchar(255) DEFAULT NULL,
  trigger_status int4 NOT NULL DEFAULT '0',
  trigger_last_time int8 NOT NULL DEFAULT '0',
  trigger_next_time int8 NOT NULL DEFAULT '0',
  CONSTRAINT pk_xxl_job_info PRIMARY KEY (id)
);
COMMENT ON COLUMN lululemon.xxl_job_info.job_group IS '执行器主键ID';
COMMENT ON COLUMN lululemon.xxl_job_info.schedule_type IS '调度类型';
COMMENT ON COLUMN lululemon.xxl_job_info.schedule_conf IS '调度配置,值含义取决于调度类型';
COMMENT ON COLUMN lululemon.xxl_job_info.misfire_strategy IS '调度过期策略';
COMMENT ON COLUMN lululemon.xxl_job_info.executor_route_strategy IS '执行器路由策略';
COMMENT ON COLUMN lululemon.xxl_job_info.executor_handler IS '执行器任务handler';
COMMENT ON COLUMN lululemon.xxl_job_info.executor_param IS '执行器任务参数';
COMMENT ON COLUMN lululemon.xxl_job_info.executor_block_strategy IS '阻塞处理策略';
COMMENT ON COLUMN lululemon.xxl_job_info.executor_timeout IS '任务执行超时时间,单位秒';
COMMENT ON COLUMN lululemon.xxl_job_info.executor_fail_retry_count IS '失败重试次数';
COMMENT ON COLUMN lululemon.xxl_job_info.child_jobid IS '子任务ID,多个逗号分隔';
COMMENT ON COLUMN lululemon.xxl_job_info.trigger_status IS '调度状态:0-停止,1-运行';
COMMENT ON COLUMN lululemon.xxl_job_info.trigger_last_time IS '上次调度时间';
COMMENT ON COLUMN lululemon.xxl_job_info.trigger_next_time IS '下次调度时间';



CREATE TABLE xxl_job_log (
  id bigserial NOT NULL,
  job_group int4 NOT NULL,
  job_id int4 NOT NULL,
  executor_address varchar(255) DEFAULT NULL,
  executor_handler varchar(255) DEFAULT NULL,
  executor_param varchar(512) DEFAULT NULL,
  executor_sharding_param varchar(20) DEFAULT NULL,
  executor_fail_retry_count int4 NOT NULL DEFAULT '0',
  trigger_time timestamp(6) NULL DEFAULT NULL::timestamp without time zone,
  trigger_code int4 NOT NULL,
  trigger_msg text,
  handle_time timestamp(6) NULL DEFAULT NULL::timestamp without time zone,
  handle_code int4 NOT NULL,
  handle_msg text,
  alarm_status int4 NOT NULL DEFAULT '0',
  CONSTRAINT pk_xxl_job_log PRIMARY KEY (id)
);
CREATE INDEX idx_xxl_job_log_trigger_time ON lululemon.xxl_job_log USING btree (trigger_time);
CREATE INDEX idx_xxl_job_log_handle_code ON lululemon.xxl_job_log USING btree (handle_code);
COMMENT ON COLUMN lululemon.xxl_job_log.job_group IS '执行器主键ID';
COMMENT ON COLUMN lululemon.xxl_job_log.job_id IS '任务,主键ID';
COMMENT ON COLUMN lululemon.xxl_job_log.executor_address IS '执行器地址,本次执行的地址';
COMMENT ON COLUMN lululemon.xxl_job_log.executor_handler IS '执行器任务handler';
COMMENT ON COLUMN lululemon.xxl_job_log.executor_param IS '执行器任务参数';
COMMENT ON COLUMN lululemon.xxl_job_log.executor_sharding_param IS '执行器任务分片参数,格式如 1/2';
COMMENT ON COLUMN lululemon.xxl_job_log.executor_fail_retry_count IS '失败重试次数';
COMMENT ON COLUMN lululemon.xxl_job_log.trigger_time IS '调度-时间';
COMMENT ON COLUMN lululemon.xxl_job_log.trigger_code IS '调度-结果';
COMMENT ON COLUMN lululemon.xxl_job_log.trigger_msg IS '调度-日志';
COMMENT ON COLUMN lululemon.xxl_job_log.handle_time IS '执行-时间';
COMMENT ON COLUMN lululemon.xxl_job_log.handle_code IS '执行-状态';
COMMENT ON COLUMN lululemon.xxl_job_log.handle_msg IS '执行-日志';
COMMENT ON COLUMN lululemon.xxl_job_log.alarm_status IS '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败';


CREATE TABLE xxl_job_log_report (
  id bigserial NOT NULL ,
  trigger_day timestamp(6) NULL DEFAULT NULL::timestamp without time zone,
  running_count int4 NOT NULL DEFAULT '0',
  suc_count int4 NOT NULL DEFAULT '0',
  fail_count int4 NOT NULL DEFAULT '0',
  update_time timestamp(6) NULL DEFAULT NULL::timestamp without time zone,
  CONSTRAINT pk_xxl_job_log_report PRIMARY KEY (id)
);
CREATE UNIQUE INDEX idx_xxl_job_log_report_trigger_day ON lululemon.xxl_job_log_report USING btree (trigger_day);
COMMENT ON COLUMN lululemon.xxl_job_log_report.trigger_day IS '调度-时间';
COMMENT ON COLUMN lululemon.xxl_job_log_report.running_count IS '运行中-日志数量';
COMMENT ON COLUMN lululemon.xxl_job_log_report.suc_count IS '执行成功-日志数量';
COMMENT ON COLUMN lululemon.xxl_job_log_report.fail_count IS '执行失败-日志数量';

CREATE TABLE xxl_job_logglue (
  id bigserial NOT NULL ,
  job_id int4 NOT NULL,
  glue_type varchar(50) DEFAULT NULL,
  glue_source text,
  glue_remark varchar(128) NOT NULL,
  add_time timestamp(6) NULL DEFAULT NULL::timestamp without time zone,
  update_time timestamp(6) NULL DEFAULT NULL::timestamp without time zone,
  CONSTRAINT pk_xxl_job_logglue PRIMARY KEY (id)
);

CREATE TABLE xxl_job_registry (
  id bigserial NOT NULL ,
  registry_group varchar(50) NOT NULL,
  registry_key varchar(255) NOT NULL,
  registry_value varchar(255) NOT NULL,
  update_time timestamp(6) NULL DEFAULT NULL::timestamp without time zone,
  CONSTRAINT pk_xxl_job_registry PRIMARY KEY (id)
);
CREATE INDEX idx_xxl_job_registry_g_k_v ON lululemon.xxl_job_registry USING btree (registry_group,registry_key,registry_value);

CREATE TABLE xxl_job_group (
  id serial NOT NULL,
  app_name varchar(64) NOT NULL,
  title varchar(12) NOT NULL,
  address_type int4 NOT NULL DEFAULT '0',
  address_list text,
  update_time timestamp(6) NULL DEFAULT NULL::timestamp without time zone,
  CONSTRAINT pk_xxl_job_group PRIMARY KEY (id)
);
COMMENT ON COLUMN lululemon.xxl_job_group.app_name IS '执行器AppName';
COMMENT ON COLUMN lululemon.xxl_job_group.title IS '执行器名称';
COMMENT ON COLUMN lululemon.xxl_job_group.address_type IS '执行器地址类型:0=自动注册、1=手动录入';
COMMENT ON COLUMN lululemon.xxl_job_group.address_list IS '执行器地址列表,多地址逗号分隔';

CREATE TABLE xxl_job_user (
  id serial NOT NULL,
  username varchar(50) NOT NULL,
  password varchar(50) NOT NULL,
  role int4 NOT NULL,
  permission varchar(255) DEFAULT NULL,
  CONSTRAINT pk_xxl_job_user PRIMARY KEY (id)
);
CREATE UNIQUE INDEX idx_xxl_job_user_username ON lululemon.xxl_job_user USING btree (username);
COMMENT ON COLUMN lululemon.xxl_job_user.role IS '角色:0-普通用户、1-管理员';
COMMENT ON COLUMN lululemon.xxl_job_user.permission IS '权限:执行器ID列表,多个逗号分割';


CREATE TABLE xxl_job_lock (
  lock_name varchar(50) NOT NULL,
  CONSTRAINT pk_xxl_job_lock PRIMARY KEY (lock_name)
);
COMMENT ON COLUMN lululemon.xxl_job_lock.lock_name IS '锁名称';




--测试数据添加
--INSERT INTO xxl_job_group(id, app_name, title, address_type, address_list, update_time) VALUES (1, 'crm-member-instance-job-executor', 'member执行器', 0, NULL, '2018-11-03 22:21:31' );
--INSERT INTO xxl_job_info(id, job_group, job_desc, add_time, update_time, author, alarm_email, schedule_type, schedule_conf, misfire_strategy, executor_route_strategy, executor_handler, executor_param, executor_block_strategy, executor_timeout, executor_fail_retry_count, glue_type, glue_source, glue_remark, glue_updatetime, child_jobid) VALUES 
--(1, 1, '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'CRON', '0 0 0 * * ? *', 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', '');
--INSERT INTO xxl_job_user(id, username, password, role, permission) VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
--INSERT INTO xxl_job_lock ( lock_name) VALUES ( 'schedule_lock');
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值