elastic-job官方提供了对于后台应用中的job管控台,可以比较方便的对正在运行的分布式job做一些基本的管理,比如修改job配置参数,启停,废除任务等,下面让我们将控制台部署起来看看效果如何
1、git下载elasticjob源码
git地址:https://github.com/apache/shardingsphere-elasticjob
通过git命令将项目下载到服务器或者本地,
2、进入项目根目录,执行编译打包命令
mvn clean install -Dmaven.test.skip=true
经过漫长的打包,终于将所需的包打好了
3、将控制台的jar包拷贝到本地并启动
windows环境下,进入bin目录后,可以直接通过start.bat进行启动
启动成功后,默认的段开是8899,浏览器访问:localhost:8899,可以看到如下界面
1、配置zk注册中心
通过之前的内容我们知道,es-job依赖zk,因此首先我们需要将zk的配置信息添加进去
2、job操作
后台启动服务,以上一篇的simpleJob为例,当job开始运行之后,在控制台的作业操作一栏,可以看到任务的相关参数信息已经展示在列表上面了,对应着程序中job的配置参数
基于此,我们可以对当前运行中的job做相应的操作
详情
列出当前job对应的分片项信息,比如当前的这个job设置了2个分片,由于只启动了一个示例,而且在同一台机器,因此IP相同,进程号也一样
点击失效
这时发现分片项0已经失效,后台不再输出关于分片项0的信息
修改
点击修改可以看到关于当前simpleJob的完整参数信息,当前的job每5秒执行一次,假如我们将其改为每10秒执行一次,通过控制台打印的时间窗口可以看到已经生效了
失效或终止
顾名思义,即将当前job停止运行,点击失效后,我们再次观察控制台,发现任务就不再执行了
关于任务的界面操作是比较简单的,大家可以尝试下,下面我们通过控制台来看看elastic-job的另一个功能,任务追踪
事件追踪
Elastic-Job提供了事件追踪功能,用于查询、统计和监控作业执行历史和执行状态。Elastic-Job-Lite在配置中提供了JobEventConfiguration,目前支持数据库方式配置。事件追踪所配置的DataSource数据库中会自动创建JOB_EXECUTION_LOG和JOB_STATUS_TRACE_LOG两张表以及若干索引
简而言之,esJob在运行过程中的产生的相关数据会被记录到这两张表中去,方便开发人员快速定位job运行过程中的日志数据或问题等操作
springboot集成事件追踪功能
在上一篇的项目中,我们增加mysql的依赖和配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
然后再在JobScheduler的配置bean中,将JobEventConfiguration这个配置对象加入即可,以上篇的mySimpleJob为例,修改后的代码如下:
@Configuration
public class MySimpleJobConfig {
@Value("${mySimpleJob.cron}")
private String cron;
@Value("${mySimpleJob.shardingTotalCount}")
private int shardingTotalCount;
@Value("${mySimpleJob.shardingItemParameters}")
private String shardingItemParameters;
@Autowired
private ZookeeperRegistryCenter regCenter;
@Autowired
private MySimpleJob mySimpleJob;
@Autowired
private DataSource dataSource;
@Bean(initMethod = "init")
public JobScheduler simpleJobScheduler() {
JobEventConfiguration jcf = new JobEventRdbConfiguration(dataSource);
return new SpringJobScheduler(mySimpleJob, regCenter,
ElasticJobUtils.getSimpleJobConfiguration(
mySimpleJob.getClass(),
cron,
shardingTotalCount,
shardingItemParameters),jcf
//,new MyElasticJobListener() 可配置监听器
);
}
}
然后,启动项目,这时可以看到,在数据库中,就会在dataflow库下生成了两张表
同时,一旦任务开始运行,job运行过程中产生的数据就会记录到表中去,想必表中的字段信息大家一看便知,就不再过多解释了
这里想要说的是,可以通过elastic-job控制台将这些数据展示到界面上,更方便我们观察,怎么操作呢?
点击左侧的数据源追踪配置,填写mysql的连接信息
这时我们再次启动后台项目,再到控制台中观察作业的历史操作和历史轨迹,可以发现job的执行信息都可以展示在控制台上了
阅读量:1491
点赞量:0
收藏量:0