场景描述:
在配置正确,调度中心admin和执行器executor启动成功的情况下,在管理界面看不到我们的执行器,只能看到xxl的示例执行器。
但是在xxl_job_registry表里(执行器注册成功会插入到这张表里),有新增的记录,表明我的执行器是注册成功了的。
那为什么不显示呢?
这个时候我去xxl_job_group表里去看,只有示例执行器的信息,并没有我的执行器信息。
原因分析及解决办法:
执行器启动之后会自动向admin端注册自己,这一步是没有问题的, 在xxl_job_registry表我们也看到了注册记录。
但是在xxl_job_group表里,没有看到我们的自己的执行器。
因此我们仍然需要在执行器管理界面去新增执行器,执行器的信息根据自己的项目信息填,选择“自动注册”即可。
新增成功之后,就可以在xxl_job_group表里看到我们的执行器信息。有一点需要注意的时候,xxl_job_group新增成功之后,address_list字段可能没有立即有值,这是因为心跳注册存在短暂延时,可以稍等下。
按照上述方案手动新增执行器后,在执行器管理界面就可以看到我们的执行器。如下图所示,执行器如果添加成功,可以查看online机器地址。
这个时候,有些人可能会有一个困惑,为什么示例执行器不需要手动在界面新增就可以显示,而我自己的执行器需要手动新增?
因为按照官网的操作说明,我们一般会执行里面的sql文件tables_xxl_job.sql。在sql里面,有下面一句标红的sql。这条sql手动把示例执行器插入到了xxl_job_group里面,这也就是示例执行器为什么不需要在界面手动新增的原因。
INSERT INTO `xxl_job_group`(`id`, `app_name`, `title`, `order`, `address_type`, `address_list`) VALUES (1, 'xxl-job-executor-sample', '示例执行器', 1, 0, NULL);
INSERT INTO `xxl_job_info`(`id`, `job_group`, `job_cron`, `job_desc`, `add_time`, `update_time`, `author`, `alarm_email`, `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, '0 0 0 * * ? *', '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', '');