第一步:创建定时器建立任务:
1.主入口添加定时器注解:
package nmrdb;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
- @Author: ShuaiFu
- @Description:
- @Date: Created in 下午 6:20 2019/4/25 0025
*/
@SpringBootApplication
@EnableScheduling
public class WtmnlpApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(WtmnlpApplication.class, args);
}
}
2、定时器接口实现:
package nmrdb.config;
import nmrdb.service.SolrService;
import nmrdb.service.TeskHistoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
-
@Author: ShuaiFu
-
@Description:
-
@Date: Created in 下午 10:46 2019/7/30 0030
*/
@Component
public class Scheduler {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
@Autowired
private TeskHistoryService teskHistoryService;
@Autowired
private SolrService solrService;//每隔2秒执行一次
// long time = 10006060*24;
@Scheduled(fixedRate = 1000 * 60 * 2)
// @Scheduled(cron = “0 00 00 ? * *”)
public void updateSqlTasks() {
int rows = teskHistoryService.CallBackNmrSourceById();
System.out.println(“此次更新数据量为:” + rows + " 时间:" + dateFormat.format(new Date()));
}//每天3:05执行
// @Scheduled(cron = “0 00 00 ? * *”)
@Scheduled(fixedRate = 1000 * 60 * 3)
public void updateSolrIndex() {
boolean delta = true; //进行全量索引
// boolean delta = false; //进行增量量索引
boolean confirm = solrService.updateSolrIndex(delta);
if (confirm){
System.out.println(“定时进行solr全量索引重建成功! 时间:” + dateFormat.format(new Date()));
}else {
System.out.println(“定时进行solr全量索引重建失败!时间:” + dateFormat.format(new Date()));
}
}
}
第二步:进行solr缩印的实现:
package nmrdb.service.impl;
import nmrdb.service.SolrService;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
/**
-
@Author: ShuaiFu
-
@Description:
-
@Date: Created in 下午 3:06 2019/7/31 0031
*/
@Service
public class SolrServiceImpl implements SolrService {@Autowired
private HttpSolrClient httpSolrClient;@Override
public boolean updateSolrIndex(boolean delta) {
boolean confirm = true;SolrQuery query = new SolrQuery(); query.setRequestHandler("/dataimport"); String command = delta ? "full-import" : "delta-import"; String clean = delta ? "true" : "false"; String optimize = delta ? "true" : "false"; query.setParam("command", command) .setParam("clean", clean) .setParam("commit", "true")
// .setParam(“entity”, “”)
.setParam(“optimize”, optimize);
try {
httpSolrClient.query(query);
httpSolrClient.commit();
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
confirm = false;
}
return confirm;
}
}
第三步;springboot资源配置:
1 服务器
server:
port: 9003
servlet:
context-path: /nmrdb
################### DataSource Configuration ##########################
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.0.101:3306/nmrdb
username: root
password: root
druid:
#连接超时时间,初始连接数,最小,最大连接数
max-wait: 60000
initial-size: 20
min-idle: 50
max-active: 200
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
# 配置一个连接在池中最小生存的时间,单位是毫秒
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
redis
redis:
###Redis数据库索引(默认为0)
database: 0
host: 127.0.0.1
port: 6379
password:
jedis:
pool:
###连接池最大连接数(使用负值表示没有限制)
max-active: 8
###连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1
###连接池中的最大空闲连接
max-idle: 5
###连接池中的最小空闲连接
min-idle: 0
###连接超时时间(毫秒)
timeout: 10000
jpa:
database: mysql
show-sql: true
hibernate:
ddl-auto: update
2 solr的配置
solr:
url: http://192.168.0.101:8080/solr/nmrCore
maxRetries: 1
connectionTimeout: 1000
第四步:查看结果:
此次更新数据量为:0 时间:2019-07-31 15:32:43
定时进行solr全量索引重建成功! 时间:2019-07-31 15:33:43
此次更新数据量为:0 时间:2019-07-31 15:34:43
此次更新数据量为:0 时间:2019-07-31 15:36:43
定时进行solr全量索引重建成功! 时间:2019-07-31 15:36:43
此次更新数据量为:0 时间:2019-07-31 15:38:43
定时进行solr全量索引重建成功! 时间:2019-07-31 15:39:43
此次更新数据量为:0 时间:2019-07-31 15:40:43