数据库管理员有个特殊的需求:
需要一个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库。
package com.xxl.job.service.handler;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.IJobHandler;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class DemoGlueJobHandler extends IJobHandler {
@Override
public void execute() throws Exception {
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/users?characterEncoding=UTF-8&useSSL=false");
ds.setUsername("root");
ds.setPassword("xxxxxxxx");
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(ds);
List rows = jdbcTemplate.queryForList("select * from user");
Iterator it = rows.iterator();
while(it.hasNext()) {
Map userMap = (Map) it.next();
XxlJobHelper.log(userMap.get("id") + "\t");
XxlJobHelper.log(userMap.get("name") + "\t");
}
XxlJobHelper.log("XXL-JOB guning, Hello World.");
}
}
为了实现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包。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
启动agent的systemd服务脚本,/etc/systemd/system/xxljob-agent.service
[Unit]
After=network.target
Wants=network.target
[Service]
WorkingDirectory=/usr/local/bin
Type=simple
ExecStart=/usr/bin/java -jar /usr/local/bin/xxl-job-executor-sample-springboot-2.3.0.jar
Restart=on-failure
[Install]
WantedBy=multi-user.target
这样就OK了。