添加异步任务

oracle
parent 648fd03e4c
commit 87f31cee18

@ -6,17 +6,13 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="eacd3dd8-1e95-428c-a6af-1aadb9921989" name="Default Changelist" comment=""> <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$/.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/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/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/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/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/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" /> <change beforePath="$PROJECT_DIR$/src/main/resources/application.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application.yml" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
@ -180,6 +176,7 @@
<workItem from="1747540249390" duration="112000" /> <workItem from="1747540249390" duration="112000" />
<workItem from="1747540902720" duration="2539000" /> <workItem from="1747540902720" duration="2539000" />
<workItem from="1747553672823" duration="9032000" /> <workItem from="1747553672823" duration="9032000" />
<workItem from="1747564622457" duration="10803000" />
</task> </task>
<servers /> <servers />
</component> </component>

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

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

@ -17,13 +17,13 @@ import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.*;
/** /**
*
* *
* 使MyBatisJPA便 * 使MyBatisJPA便
* jdbcMyBatisJPA * jdbcMyBatisJPA
* * <p>
* fastjson,druid,mysqlpom.xml * fastjson,druid,mysqlpom.xml
* *
* <dependency> * <dependency>
@ -41,7 +41,6 @@ import java.util.List;
* <groupId>mysql</groupId> * <groupId>mysql</groupId>
* <artifactId>mysql-connector-java</artifactId> * <artifactId>mysql-connector-java</artifactId>
* </dependency> * </dependency>
*
*/ */
/** /**
@ -66,6 +65,7 @@ public class JdbcDemoController {
public static DataSource ds = new DataSource(); public static DataSource ds = new DataSource();
static { static {
//配置数据源 //配置数据源
ds.setId("1"); ds.setId("1");
@ -88,10 +88,10 @@ public class JdbcDemoController {
* @return * @return
*/ */
@RequestMapping("/api/list") @RequestMapping("/api/list")
public ResponseDto queryList() public ResponseDto queryList() {
{
String sql = "select * from temperature where id = ?";
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
String sql = "select * from temperature where id = ?";
List<Object> jdbcParamValues = new ArrayList<>(); List<Object> jdbcParamValues = new ArrayList<>();
for (int i = 0; i < 2362254; i++) { for (int i = 0; i < 2362254; i++) {
// try { // try {
@ -112,7 +112,6 @@ public class JdbcDemoController {
log.info(gson.toJson(responseTemperatureDto.getData().get(0))); log.info(gson.toJson(responseTemperatureDto.getData().get(0)));
TemperatureDto dto = responseTemperatureDto.getData().get(0); TemperatureDto dto = responseTemperatureDto.getData().get(0);
Temperature temperature = new Temperature(); Temperature temperature = new Temperature();
temperature.setCreateDate(dto.getCreateDate()); temperature.setCreateDate(dto.getCreateDate());
temperature.setDataDate(dto.getDataDate()); temperature.setDataDate(dto.getDataDate());
@ -122,11 +121,57 @@ public class JdbcDemoController {
temperature.setHumidity(String.valueOf(dto.getHumidity())); temperature.setHumidity(String.valueOf(dto.getHumidity()));
temperature.setTemperature(String.valueOf(dto.getTemperature())); temperature.setTemperature(String.valueOf(dto.getTemperature()));
temperature.setLocationDesc(dto.getLocationDesc()); temperature.setLocationDesc(dto.getLocationDesc());
temperatureService.saveTemperature(temperature); 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) // @GeneratedValue(strategy = GenerationType.IDENTITY)
// @ApiModelProperty(value = "主键") // @ApiModelProperty(value = "主键")
@Id @Id
@ApiModelProperty(value = "主键")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="temperature_seq") @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; private Long id;
@ApiModelProperty(value = "温度") @ApiModelProperty(value = "温度")
@ -60,9 +61,9 @@ public class Temperature implements Serializable {
@Column(length=80) @Column(length=80)
private String locationDesc; private String locationDesc;
//@CreatedDate
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "创建时间")
@Temporal(TemporalType.TIMESTAMP) @Temporal(TemporalType.TIMESTAMP)
@CreatedDate
private Date createDate; private Date createDate;
} }

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

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

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

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

Loading…
Cancel
Save