//slf4j 看执行
@Slf4j
@Component
public class ScheduleTaskExecutor {
@Autowired
private RestTemplate restTemplate;
@Scheduled(cron = "15 35 17 * * ?")
public void ex() {
JsonParam jsonParam = new JsonParam();
log.info("start");
// restTemplate.getForEntity("http://127.0.0.1:9527/sct/s",String.class);
restTemplate.postForEntity("http://127.0.0.1:9527/sct/r",jsonParam , String.class);
log.info("end");
rest的接口
@RequestMapping("/r")
public String executeTaskPost(@RequestBody JsonParam jsonParam) {
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = format.format(date);
System.out.println("time = " + time);
String name = jsonParam.getName();
name=StringUtils.isNotEmpty(name)?name:"张三";
return time+name;
}
开启schedule注解
@EnableScheduling//开启定时任务
public class DemoApplication {
配置restTemplate 属性
@Configuration
@Slf4j
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate() {
返回的restTemplate的区别
//用的是URLConnection
return new RestTemplate();
自带,集成了URLConnection
SimpleClientHttpRequestFactory requestFactory = null;
requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(1000);
requestFactory.setReadTimeout(1000);
推荐:修改默认HttpClient的固定连接数,封装HttpClient,额外依赖
HttpComponentsClientHttpRequestFactory factory
= new HttpComponentsClientHttpRequestFactory(
HttpClientBuilder.create()
//最大连接池并发连接数
.setMaxConnTotal(20)
//单路由最大并发连接数
.setMaxConnPerRoute(20)
.setConnectionTimeToLive(120, TimeUnit.SECONDS)
.build());
factory.setConnectTimeout(1000);
factory.setConnectionRequestTimeout(1000);
okhttp
//封装OKHttp,额外依赖
OkHttpClient okHttpClient = new OkHttpClient();
OkHttp3ClientHttpRequestFactory okHttp3ClientHttpRequestFactory = new OkHttp3ClientHttpRequestFactory(
okHttpClient);
okHttp3ClientHttpRequestFactory.setConnectTimeout(1000);
okHttp3ClientHttpRequestFactory.setReadTimeout(1000);
okHttp3ClientHttpRequestFactory.setWriteTimeout(1000);