Xxl-Job的动态编辑并执行java脚本

数据库管理员有个特殊的需求:

需要一个msyql客户端,可以定时去连接mysql服务器执行SQL语句。且可以自己动态编辑SQL语句。

找来找去,数据库管理员对spring java这类东西吧一无所知,但是通晓SQL,这种情形XXL-JOB的EXECUTOR代位执行就比较适合。

主控地址:http://172.18.31.13/xxl-job-admin/

使用很简单,我们在172.18.31.14装一个被控端的executor,运行模式选择GLUE(Java)模式,GLUE模式就可以随便编辑 JAVA+SQL源代码了。设置执行频率是每30分钟执行一次。

选择GLUE模式后,我们就可以在GLUE IDE里编辑代码:

代码如下: 注:在172.18.31.14上面已经装了一个MySQL服务端,有一个user库。

 1package com.xxl.job.service.handler;
 2
 3import com.xxl.job.core.context.XxlJobHelper;
 4import com.xxl.job.core.handler.IJobHandler;
 5import org.springframework.jdbc.core.JdbcTemplate;
 6import org.springframework.jdbc.datasource.DriverManagerDataSource;
 7
 8public class DemoGlueJobHandler extends IJobHandler {
 9
10	@Override
11	public void execute() throws Exception {
12
13        DriverManagerDataSource ds = new DriverManagerDataSource();
14        ds.setDriverClassName("com.mysql.jdbc.Driver");
15        ds.setUrl("jdbc:mysql://localhost:3306/users?characterEncoding=UTF-8&useSSL=false");
16        ds.setUsername("root");
17        ds.setPassword("xxxxxxxx");
18
19        JdbcTemplate jdbcTemplate = new JdbcTemplate();
20        jdbcTemplate.setDataSource(ds);
21      
22
23        List rows = jdbcTemplate.queryForList("select * from user"); 
24        Iterator it = rows.iterator(); 
25        while(it.hasNext()) { 
26            Map userMap = (Map) it.next(); 
27            XxlJobHelper.log(userMap.get("id") + "\t"); 
28            XxlJobHelper.log(userMap.get("name") + "\t"); 
29        } 
30      
31        XxlJobHelper.log("XXL-JOB guning, Hello World.");
32	}
33
34  
35}

为了实现mysql客户端可以对MySQL进行读写,我们需要在xxl-job的xxl-job-executor-sample-springboot示例项目中,pom.xml中增加spring-jdbc和mysql-connector-java的jar包部分。打出一个xxl-job的executor的执行端程序。

代码在 /root/xxl-job-2.3.0/xxl-job-executor-samples/xxl-job-executor-sample-springboot目录下,用mvn package就可以打出xxl-job-executor-sample-springboot-2.3.0.jar包。

 1        <dependency>
 2            <groupId>org.springframework</groupId>
 3            <artifactId>spring-jdbc</artifactId>
 4            <version>4.3.2.RELEASE</version>
 5        </dependency>
 6        <dependency>
 7            <groupId>mysql</groupId>
 8            <artifactId>mysql-connector-java</artifactId>
 9            <version>${mysql-connector-java.version}</version>
10        </dependency>

启动agent的systemd服务脚本,/etc/systemd/system/xxljob-agent.service

 1[Unit]  
 2After=network.target  
 3Wants=network.target  
 4
 5[Service]  
 6WorkingDirectory=/usr/local/bin
 7Type=simple  
 8ExecStart=/usr/bin/java -jar /usr/local/bin/xxl-job-executor-sample-springboot-2.3.0.jar
 9Restart=on-failure  
10
11[Install]  
12WantedBy=multi-user.target 

这样就OK了。


检查证书是否过期的脚本
Librenms强制修改密码
comments powered by Disqus