添加异步任务

oracle
parent 648fd03e4c
commit 87f31cee18

@ -6,17 +6,13 @@
<component name="ChangeListManager">
<list default="true" id="eacd3dd8-1e95-428c-a6af-1aadb9921989" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/AdminClientTemperatureApplication.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/AdminClientTemperatureApplication.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/controller/JdbcDemoController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/controller/JdbcDemoController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/controller/WeatherController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/controller/WeatherController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/dto/TemperatureDto.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/dto/TemperatureDto.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/entity/Temperature.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/entity/Temperature.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/entity/WebServiceCity.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/entity/WebServiceCity.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/entity/WebServiceProvince.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/entity/WebServiceProvince.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/entity/WebServiceWeatherInfo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/entity/WebServiceWeatherInfo.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/service/impl/TemperatureServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/service/impl/TemperatureServiceImpl.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/task/AgencyTask.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/task/AgencyTask.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/task/WebServiceWeatherTask.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/task/WebServiceWeatherTask.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/utils/JdbcUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/rehome/mqttclienttemperature/utils/JdbcUtil.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/application.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application.yml" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
@ -180,6 +176,7 @@
<workItem from="1747540249390" duration="112000" />
<workItem from="1747540902720" duration="2539000" />
<workItem from="1747553672823" duration="9032000" />
<workItem from="1747564622457" duration="10803000" />
</task>
<servers />
</component>

@ -1,5 +1,10 @@
# admin-client-temperature
java CompletableFuture异步回调
https://blog.csdn.net/n0430/article/details/147880286
# Spring-axis
#### 介绍

@ -58,11 +58,11 @@ public class AdminClientTemperatureApplication extends SpringBootServletInitiali
try {
if (temperatureService != null) {
System.out.println("------------------------");
System.out.println("UseryfController is not empty");
System.out.println("TemperatureController is not empty");
MqttRSAClient client = new MqttRSAClient();
client.start(temperatureService);
} else {
System.out.println("UseryfController is empty");
System.out.println("TemperatureController is empty");
}
} catch (Exception ex) {
ex.printStackTrace();

@ -17,13 +17,13 @@ import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.*;
/**
*
*
* 使MyBatisJPA便
* jdbcMyBatisJPA
*
* <p>
* fastjson,druid,mysqlpom.xml
*
* <dependency>
@ -41,7 +41,6 @@ import java.util.List;
* <groupId>mysql</groupId>
* <artifactId>mysql-connector-java</artifactId>
* </dependency>
*
*/
/**
@ -66,6 +65,7 @@ public class JdbcDemoController {
public static DataSource ds = new DataSource();
static {
//配置数据源
ds.setId("1");
@ -88,31 +88,30 @@ public class JdbcDemoController {
* @return
*/
@RequestMapping("/api/list")
public ResponseDto queryList()
{
String sql = "select * from temperature where id = ?";
public ResponseDto queryList() {
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
String sql = "select * from temperature where id = ?";
List<Object> jdbcParamValues = new ArrayList<>();
for(int i=0;i<2362254;i++){
for (int i = 0; i < 2362254; i++) {
// try {
// Thread.sleep(5);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
jdbcParamValues.add(i+1);
jdbcParamValues.add(i + 1);
Gson gson = new Gson();
ResponseDto responseDto = JdbcUtil.executeSql(ds,sql,jdbcParamValues);
ResponseDto responseDto = JdbcUtil.executeSql(ds, sql, jdbcParamValues);
String dbQueryResult = gson.toJson(responseDto);
log.info(dbQueryResult);
jdbcParamValues.clear();
ResponseTemperatureDto responseTemperatureDto=gson.fromJson(dbQueryResult,ResponseTemperatureDto.class);
if(responseTemperatureDto.isSuccess()&&responseTemperatureDto.getData()!=null&&responseTemperatureDto.getData().size()>0){
ResponseTemperatureDto responseTemperatureDto = gson.fromJson(dbQueryResult, ResponseTemperatureDto.class);
if (responseTemperatureDto.isSuccess() && responseTemperatureDto.getData() != null && responseTemperatureDto.getData().size() > 0) {
log.info(gson.toJson(responseTemperatureDto.getData().get(0)));
TemperatureDto dto = responseTemperatureDto.getData().get(0);
Temperature temperature = new Temperature();
temperature.setCreateDate(dto.getCreateDate());
temperature.setDataDate(dto.getDataDate());
@ -122,11 +121,57 @@ public class JdbcDemoController {
temperature.setHumidity(String.valueOf(dto.getHumidity()));
temperature.setTemperature(String.valueOf(dto.getTemperature()));
temperature.setLocationDesc(dto.getLocationDesc());
temperatureService.saveTemperature(temperature);
}
}
return null;
return "数据库同步成功";
});
future.thenApply(result -> {
System.out.println("Result: " + result);
return result;
});
return ResponseDto.successWithMsg("数据库正在同步...");
}
public void completableFutureExample() {
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
// 模拟耗时操作
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt(); // 重置中断状态
}
return 123;
});
// 非阻塞等待结果但不返回结果如果要处理结果可以使用thenApply等
future.thenAccept(result -> System.out.println("Result: " + result)).join();
}
/**
*
* @return
*/
@RequestMapping("/api/getResult")
public String getResult() {
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 模拟耗时操作
try {
Thread.sleep(1000);
System.out.println("异步处理完成");
} catch (InterruptedException e) {
Thread.currentThread().interrupt(); // 重置中断状态
}
return "数据库同步成功";
});
//注意如果需要异步返回结果再做后续操作需要加入join()方法等待异步计算结果后回调,不然异步没有处理完直接主线程结束
future.thenApply(result -> {
System.out.println("Result: " + result);
return result;
}).join();
System.out.println("数据库正在同步...");
return "数据库正在同步...";
}
}

@ -30,8 +30,9 @@ public class Temperature implements Serializable {
// @GeneratedValue(strategy = GenerationType.IDENTITY)
// @ApiModelProperty(value = "主键")
@Id
@ApiModelProperty(value = "主键")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="temperature_seq")
@SequenceGenerator(name="temperature_seq", sequenceName="temperature_seq_name_appserver")
@SequenceGenerator(name="temperature_seq", sequenceName="temperature_seq_appserver")
private Long id;
@ApiModelProperty(value = "温度")
@ -60,9 +61,9 @@ public class Temperature implements Serializable {
@Column(length=80)
private String locationDesc;
//@CreatedDate
@ApiModelProperty(value = "创建时间")
@Temporal(TemporalType.TIMESTAMP)
@CreatedDate
private Date createDate;
}

@ -20,6 +20,7 @@ public class WebServiceProvince implements Serializable {
// @GeneratedValue(strategy = GenerationType.IDENTITY)
// @ApiModelProperty(value = "主键")
@Id
@ApiModelProperty(value = "主键")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "webService_province_seq")
@SequenceGenerator(name = "webService_province_seq", sequenceName = "webService_province_seq")
private Long id;

@ -34,6 +34,7 @@ public class WebServiceWeatherInfo {
// @GeneratedValue(strategy = GenerationType.IDENTITY)
// @ApiModelProperty(value = "主键")
@Id
@ApiModelProperty(value = "主键")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "webService_weather_info_seq")
@SequenceGenerator(name = "webService_weather_info_seq", sequenceName = "webService_weather_info_seq")
private Long id;

@ -37,7 +37,7 @@ public class TemperatureServiceImpl implements TemperatureService {
String dataMinute = sdfMinute.format(now);
String dataSecond = sdfSecond.format(now);
Temperature temperature = new Temperature();
//temperature.setCreateDate(now);
temperature.setCreateDate(now);
temperature.setDataDate(nowDate);
temperature.setDataHour(nowHour);
temperature.setDataMinute(dataMinute);

@ -22,10 +22,8 @@ spring:
# password: Skyinno251,
driverClassName: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@192.168.1.9:1521/orcl
username: huangwenfei
password: huangwenfei
# username: appserver
# password: appserver
username: appserver
password: appserver
jpa:
database: oracle # 配置 DBMS 类型
show-sql: true # 配置是否将执行的 SQL 输出到日志

Loading…
Cancel
Save